C# Barrier簡單介紹


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處后,又都開始繼續往下執行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM