在上一篇C#多線程之線程同步篇2中,我們主要學(xué)習(xí)了AutoResetEvent構(gòu)造、ManualResetEventSlim構(gòu)造和CountdownEvent構(gòu)造,在這一篇中,我們將學(xué)習(xí)Barrier構(gòu)造、ReaderWriterLockSlim構(gòu)造和SpinWait構(gòu)造。
七、使用Barrier構(gòu)造
在這一小節(jié)中,我們將學(xué)習(xí)一個比較有意思的同步構(gòu)造:Barrier。Barrier構(gòu)造可以幫助我們控制多個等待線程達到指定數(shù)量后,才發(fā)送通知信號,然后所有等待線程才能繼續(xù)執(zhí)行,并且在每次等待線程達到指定數(shù)量后,還能執(zhí)行一個回調(diào)方法。具體步驟如下所示:
1、使用Visual Studio 2015創(chuàng)建一個新的控制臺應(yīng)用程序。
2、雙擊打開“Program.cs”文件,編寫代碼如下所示:
1 using System; 2 using System.Threading; 3 using static System.Console; 4 using static System.Threading.Thread; 5 6 namespace Recipe07 7 { 8 class Program 9 {10 static Barrier barrier = new Barrier(2, b => WriteLine($"End of phase