C#多线程同步(六)【CountdownEvent】
来源:互联网 发布:淘宝网购买泓铭软件 编辑:程序博客网 时间:2024/06/06 13:58
命运是机会的影子。
Test.cs代码:
class Test { //CountdownEvent 表示在计数变为0时处于有信号状态的同步基元 通过信号机制 //CountdownEvent基于这样一个简单的规则:当有新的需要同步的任务产生时,就调用AddCount增加它的计数,当有任务到达同步点是, //就调用Signal函数减小它的计数,当CountdownEvent的计数为零时,就表示所有需要同步的任务已经完成,可以开始下一步任务了。 //CountDownEvent与Barrier相似,所不同的是,CountDownEvent调用成员函数Wait()将阻塞,直至成员函数Signal() 被调用达特定的次数,这时CountDownEvent称作就绪态, //对于处于就绪态的CountDownEvent,调用Wait()函数将不会再阻塞,只有手动调用Reset()函数后,调用Wait()函数将再次阻塞。 //CountDownEvent可以通过TryAddCount()和AddCount()函数来增加函数Signal() 需被调用的次数,但只有当CountDownEvent处于未就绪态时才会成功。 //否则根据调用函数的不同,将有可能抛出异常。 static CountdownEvent _countdown = new CountdownEvent(2); static void PerformOperation(string message, int seconds) { Thread.Sleep(TimeSpan.FromSeconds(seconds)); Console.WriteLine(message); // 减少 1 个信号 _countdown.Signal(); } public static void RunTest() { Console.WriteLine("开始两个操作"); var t1 = new Thread(() => PerformOperation("操作1完成", 4)); var t2 = new Thread(() => PerformOperation("操作2完成", 8)); t1.Start(); t2.Start(); // 阻塞当前线程,直到 CountdownEvent 的信号数量变为 0 _countdown.Wait(); Console.WriteLine("两个操作都已完成."); _countdown.Dispose(); } }
运行结果如图:
0 0
- C#多线程同步(六)【CountdownEvent】
- C# CountdownEvent实现
- c# 中CountDownEvent的使用
- C#多线程同步1
- C#多线程同步2
- C#多线程同步3
- c#多线程同步,信号
- C#多线程同步
- c# 多线程同步
- C#多线程同步
- C# 多线程同步
- C# 多线程同步
- c#多线程同步
- C# 多线程同步
- C#多线程同步技术
- C#多线程同步
- C# 多线程同步
- C# 多线程同步
- 你好2017
- caffe-windows下使用pycaffe绘制网络图
- 数据分析与数据挖掘在常规工作中的应用——数据异常值
- 四旋翼飞行器之PID参数整定
- Ubuntu右键打开一个终端脚本
- C#多线程同步(六)【CountdownEvent】
- Android Fragment 小结(1)
- ConcurrentHashMap学习笔记(Java8)
- Deep Image Homography Estimation 个人解读
- android binder机制 阅读笔记
- 承接上一篇:说说评论弹出editext,计算软键盘高度,使listview,recyclerview上滑指定高度
- 4.struts2_4_配置文件详解
- 方法
- 欢迎使用CSDN-markdown编辑器