《C#多線程編程實戰》2.8 Barrier

來源:互聯網
上載者:User

標籤:col   cond   建構函式   mes   理解   static   sleep   迭代   name   

不得不說,C#的同步線程的機制是真的多。

各式各樣。幾乎各種情境下都有可以使用的同步機制。

今天說的,就是比較有意思了。

等待的機制很簡單,單純的等待。 使用的方法我就等。 等待的東西或者內容則是你自己設定的。

相當好理解了。

書上這玩意迭代的作用比較大。

  class Program    {        static Barrier barrier = new Barrier(1,b=>Console.WriteLine($"End of phase{b.CurrentPhaseNumber+1}"));        static void PlayMusic(string name,string message,int seconds)        {            for (int i = 2; i < 3; i++)            {                Console.WriteLine("----------------------------------------------------");                Thread.Sleep(TimeSpan.FromMilliseconds(seconds));                Console.WriteLine($"{name} finishes to {message}");                barrier.SignalAndWait();            }        }        static void Main(string[] args)        {            var t1 = new Thread(() => PlayMusic("m1", " good music", 5));            var t2 = new Thread(() => PlayMusic("m2", "bad  music", 5));            t1.Start();            t2.Start();            Console.ReadKey();        }    }

特殊的地方是 Barrier在執行個體化的時候向建構函式傳參的時候,

第一個參數 是共有幾次或者理解成有幾個不同的地方或者線程來使用Barrier

第二個參數 是可以為NULL的,是一個回呼函數。什麼時候使用呢就是當Barrier使用了SignalAndWait方法的時候就會調用。等待內容也是這裡

剩下就是看SignalAndWait方法了。

《C#多線程編程實戰》2.8 Barrier

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.