首页 > 编程语言 > 详细

[.net 多线程]CountdownEvent

时间:2018-05-17 21:56:03      阅读:276      评论:0      收藏:0      [点我收藏+]
System.Threading.CountdownEvent 是一个同步基元,它在收到一定次数的信号之后,将会解除对其等待线程的锁定。CountdownEvent在初始化时有一个初始计数量,在每个工作项在完成时调用 Signal每次调用Signal 时,信号计数都会递减 1。 在主线程上,对 Wait 的调用将会阻塞,直至信号计数为零。
 
技术分享图片
 1 static void Main(string[] args)
 2 {
 3     CountdownEvent countdown = new CountdownEvent(3);
 4     int taskid = 1;
 5     for (var i = 0; i < 3; i++)
 6     {
 7         Task.Factory.StartNew(() =>
 8         {
 9             int cur = taskid++;
10             Console.WriteLine($"Task[{cur}] is Running");
11             Thread.Sleep(taskid * 1000);
12             countdown.Signal();
13             Console.WriteLine($"Task[{cur}] exit");
14         });
15     }
16     Console.WriteLine($"Main wait");
17     countdown.Wait();
18     Console.WriteLine($"Main exit");
19     Console.ReadKey();
20 }
CountdownEvent 示例代码

CountdownEvent 与Barrier类似,但是在多次等待中,使用Barrier更加方便。

[.net 多线程]CountdownEvent

原文:https://www.cnblogs.com/deepminer/p/9053493.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!