C# Barrier簡單介紹
Barrier的注釋為:
使多個任務能夠采用並行方式依據某種算法在多個階段中協同工作。
代碼示例:
static void Main(string[] args)
{
Barrier barrier = new Barrier(4, it => {
Console.WriteLine("再次集結,友誼萬歲,再次開跑");
});
string[] names = { "張三", "李四", "王五", "趙六" };
Random random = new Random();
foreach(string name in names)
{
Task.Run(() => {
Console.WriteLine($"{name}開始跑");
int t = random.Next(1, 10);
Thread.Sleep(t * 1000);
Console.WriteLine($"{name}用時{t}秒,跑到友誼集結點");
barrier.SignalAndWait();
Console.WriteLine($"友誼萬歲,{name}重新開始跑");
});
}
Console.ReadKey();
}
執行結果為:
張三開始跑
李四開始跑
王五開始跑
趙六開始跑
王五用時4秒,跑到友誼集結點
趙六用時6秒,跑到友誼集結點
張三用時7秒,跑到友誼集結點
李四用時7秒,跑到友誼集結點
再次集結,友誼萬歲,再次開跑
友誼萬歲,李四重新開始跑
友誼萬歲,王五重新開始跑
友誼萬歲,趙六重新開始跑
友誼萬歲,張三重新開始跑
簡的來說,假定有一個4人參加的友誼賽,4人開始跑,有的人跑的快,有的人跑的慢,但是都會在SignalAndWait處停下來,等4個人都到達SignalAndWait處后,又都開始繼續往下執行了。