码迷,mamicode.com
首页 > 编程语言 > 详细

[.net 多线程]CountdownEvent

时间:2018-05-17 22:04:51      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:data   ati   event   actor   net   eve   style   factory   一个   

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

标签:data   ati   event   actor   net   eve   style   factory   一个   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!