C#執行緒同步CountdownEvent
阿新 • • 發佈:2018-12-07
CountdownEvent用於在完成指定的幾個操作後悔發出訊號。
下面通過程式碼來說下CountdownEvent。
static CountdownEvent _countdown = new CountdownEvent(2);
static void PerformOperation(string message,int seconds)
{
Thread.Sleep(TimeSpan.FromSeconds(seconds));
Console.WriteLine(message);
_countdown. Signal();
}
static void Main(string[] args)
{
Console.WriteLine("Starting two operations");
var t1 = new Thread(() => PerformOperation("Operation 1 is completed", 4));
var t2 = new Thread(() => PerformOperation("Operation 2 is completed" , 8));
t1.Start();
t2.Start();
_countdown.Wait();
Console.WriteLine("get _countdown");
_countdown.Dispose();
}
在建立CountdownEvent時可以設定需要完成幾個操作時傳送訊號,這裡我設定為兩個,其含義是想要獲得訊號,在獲得訊號之前必須執行兩次_countdown.Signal();
否則執行緒將一直處於阻塞狀態,在這個程式中便是主執行緒想獲得_countdown,必須等待t1、t2兩個執行緒執行_countdown.Signal();