天天看點

《C#多線程程式設計實戰(原書第2版)》——2.3 使用Mutex類

本節書摘來自華章出版社《c#多線程程式設計實戰(原書第2版)》一書中的第2章,第2.3節,作者(美)易格恩·阿格佛溫(eugene agafonov),黃博文 黃輝蘭 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

本節将描述如何使用mutex類來同步兩個單獨的程式。mutex是一種原始的同步方式,其隻對一個線程授予對共享資源的獨占通路。

為了學習本節,你需要安裝visual studio 2015。除此之外無需其他準備。本節的源代碼放置在booksampleschapter2recipe2目錄中。

請執行以下步驟來了解如何使用mutex類實作兩個單獨的程式的同步:

1.啟動visual studio 2015。建立一個c#控制台應用程式項目。

2.在program.cs檔案中加入以下using指令:

《C#多線程程式設計實戰(原書第2版)》——2.3 使用Mutex類

3.在main方法中加入以下代碼片段:

《C#多線程程式設計實戰(原書第2版)》——2.3 使用Mutex類

4.運作程式。

當主程式啟動時,定義了一個指定名稱的互斥量,設定initialowner标志為false。這意味着如果互斥量已經被建立,則允許程式擷取該互斥量。如果沒有擷取到互斥量,程式則簡單地顯示running,等待直到按下了任何鍵,然後釋放該互斥量并退出。

如果再運作同樣一個程式,則會在5秒鐘内嘗試擷取互斥量。如果此時在第一個程式中按下了任何鍵,第二個程式則會開始執行。然而,如果保持等待5秒鐘,第二個程式将無法擷取到該互斥量。

該方式可用于在不同的程式中同步線程,可被推廣到大量的使用場景中。