在开发过程中,经常需要多个任务并行的执行的场景,同时任务之间又需要先后依赖的关系。针对这样的处理逻辑,通常会采用多线程的程序模型来实现。

比如A、B、C三个线程,A和B需要同时启动,并行处理,且B需要依赖A完成,在进行后续的处理,C需要B完成后开始处理。

针对这个场景,使用了ThreadPool,ManualResetEvent等.net框架内置的类功能进行了模拟,实现代码如下:

public class MultipleThreadCooperationSample{public static ManualResetEvent eventAB = new ManualResetEvent(false);public static ManualResetEvent eventBC = new ManualResetEvent(false);public static int Main(string[] args){//so called thread AThreadPool.QueueUserWorkItem(new WaitCallback(d =>{Console.WriteLine("Start A thread");Thread.Sleep(4000);eventAB.Set();}));//thread AThreadPool.QueueUserWorkItem(new WaitCallback(d =>{Console.WriteLine("Start B thread and wait A thread to finised.");eventAB.WaitOne();Console.WriteLine("Process something within B thread");Thread.Sleep(4000);eventBC.Set();}));eventBC.WaitOne(Timeout.Infinite, true);//thread CThreadPool.QueueUserWorkItem(new WaitCallback(d =>{Console.WriteLine("From C thread, everything is done.");}));Console.ReadLine();return 0;}}

运行结果如下:

C#多线程顺序依赖执行控制相关推荐

  1. Java中控制多线程顺序执行

    Java中控制多线程顺序执行 一.概述 二.普通示例 三.控制示例 3.1.设置线程优先级 3.2.使用线程类的join() 3.2.1.在主线程join() 3.2.2.在子线程join() 3.3 ...

  2. java 多线程顺序执行

    这道阿里巴巴多线程面试题,你学会了没有? 置顶 2019年06月14日 15:43:55 XingXing_Java 阅读数 447 点关注,不迷路:持续更新Java相关技术及资讯!!! 前言 有个朋 ...

  3. python如何控制程序的运行顺序_Python流程控制-1 顺序执行

    流程控制指的是代码运行逻辑.分支走向.循环控制,是真正体现我们程序执行顺序的操作.流程控制一般分为顺序执行.条件判断和循环控制. 顺序执行 Python代码在执行过程中,遵循下面的基本原则: 普通语句 ...

  4. 进击谷歌:多线程下程序执行顺序怎么稳定不乱?

    面试官您好,我是来面试的 您好,我是这次的面试官,先介绍一下自己把 我是女孩,blala .... 那问一个多线程的问题吧,在一个多线程的环境中,怎么能保证一系列方法的执行顺序呢? 01 PART 题 ...

  5. 23.多线程(进程的概述和多进程的意义,线程的概述和多线程的意义,JVM运行原理以及JVM启动的线程探讨,实现多线程 线程调度,线程控制,Lock锁,死锁现象)

    1.进程概述及多进程的意义 1.线程和进程     要想说线程,首先必须得聊聊进程,因为线程是依赖于进程存在的. 2.进程概述     什么是进程呢?通过任务管理器我们就可以看到进程的存在.      ...

  6. 多线程顺序打印的5种解法

    多线程同步的方式有许多,有传统的synchronized锁,还可以使用lock锁,下面列举多线程顺序打印的5种解法,算作对线程同步的一个总结. 文章目录 经典面试题 多种解法 使用 Lock 使用 w ...

  7. 软件开发过程与项目管理(14.项目核心计划执行控制)

    软件开发过程与项目管理(14.项目核心计划执行控制) 范围计划执行控制 范围核实 变更控制 进度与成本执行控制 图解控制法 挣值分析法(重点) 挣值分析法- 输入 BCWS-Budgeted Cost ...

  8. 一看就会的kafka多线程顺序消费【内附Demo哦】

    Hello,这里是爱 Coding,爱 Hiphop,爱喝点小酒的 AKA 柏炎. Kafka是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于 ...

  9. 新颖且有价值的想法在哪里以及如何产生的?与产生相关的后颞叶和与执行控制相关的前额叶皮层的tDCS

    大家好,这里是"茗创科技".文章来源于"茗创科技"微信公众号,欢迎大家搜索关注. 现今社会突飞猛进的发展和进步离不开我们人类大脑所产生的一系列创造性的ideas ...

最新文章

  1. Nancy之结合TinyFox调试备忘
  2. 浅析掌握 Python数据分析与展示的几个要点
  3. 旋钮编码器c代码_人脸合成效果媲美StyleGAN,而它是个自编码器
  4. Silverlight之工具箱使用1
  5. 10款中小企业必备的开源免费安全工具
  6. eureka管理界面是多少_Eureka注册中心
  7. IO流,字节流文件拷贝示例 [FileInputStream FileOutputStream]
  8. Go 1.8中值得关注的几个变化
  9. 调试中除了在URL上加时间戳外,如何避免js、css被返回304状态?
  10. 安装appach时出现没有安装gcc的错误,用yum安装gcc时yum出现错误(修改yum配置)...
  11. 社团管理系统数据流图_实例6:社团管理系统数据库设计
  12. 分享一个不错的数据分析实战案例【全程附图】EXCEL
  13. Android Studio报错提示:Excepted resource of type color
  14. raid卡组不同raid_磁盘阵列卡组RAIDO 对比主板自带组磁盘阵列
  15. 如何用SaaS科技赋能中小企业管理
  16. postgis基本用法
  17. 你真的会用ls命令吗?--文件管理命令(ls命令详解)
  18. 程序员职业资格软考——软考,你不想软就得考 (值得一看的总结)
  19. ECMAScript 6 基本(未完待续)
  20. php.ini 详解

热门文章

  1. MySQL之高性能的索引策略(索引优化)
  2. 抽卡游戏的随机机制(转载)
  3. 计算机网络——IP地址总述
  4. 安卓_手机卫士_第五天(手机定位,设备管理器,电话归属地)
  5. cf 581B-------Luxurious Houses
  6. DOS命令:assoc
  7. 1919: kirito's 星爆气流斩(多重背包转换为01背包+二进制优化)
  8. 阿里菜鸟愚人节最新力作,高大上宠物递送萌翻铲屎官
  9. 原来棒棒糖还有这功能~
  10. 英语口语九十九之每日十句口语