C Mutex物件的使用

2021-07-05 04:38:46 字數 751 閱讀 8759

c#語言有很多值得學習的地方,這裡我們主要介紹c# mutex物件,包括介紹控制好多個執行緒相互之間的聯絡等方面。

如何控制好多個執行緒相互之間的聯絡,不產生衝突和重複,這需要用到互斥物件,即:system.threading 命名空間中的 mutex 類。

我們可以把mutex看作乙個計程車,乘客看作執行緒。乘客首先等車,然後上車,最後下車。當乙個乘客在車上時,其他乘客就只有等他下車以後才可以上車。而執行緒與c# mutex物件的關係也正是如此,執行緒使用mutex.waitone()方法等待c# mutex物件被釋放,如果它等待的c# mutex物件被釋放了,它就自動擁有這個物件,直到它呼叫mutex.releasemutex()方法釋放這個物件,而在此期間,其他想要獲取這個c# mutex物件的執行緒都只有等待。

下面這個例子使用了c# mutex物件來同步四個執行緒,主線程等待四個執行緒的結束,而這四個執行緒的執行又是與兩個c# mutex物件相關聯的。

其中還用到autoresetevent類的物件,可以把它理解為乙個訊號燈。這裡用它的有訊號狀態來表示乙個執行緒的結束。

ps:上面的程式執行會出現「由於出現被放棄的 mutex,等待過程結束」的報錯。

如果執行緒終止而未釋放 mutex,則認為該 mutex 已放棄。這是嚴重的程式設計錯誤,因為該 mutex 正在保護的資源可能會處於不一致的狀態。在 .net framework 2.0 版中,獲取該 mutex 的下乙個執行緒中將引發 abandonedmutexexception。所以waitone方法和releasemutex方法最好成對出現。

C Mutex物件的使用

c 語言有很多值得學習的地方,這裡我們主要介紹c mutex物件,包括介紹控制好多個執行緒相互之間的聯絡等方面。如何控制好多個執行緒相互之間的聯絡,不產生衝突和重複,這需要用到互斥物件,即 system.threading 命名空間中的 mutex 類。我們可以把mutex看作乙個計程車,乘客看作執...

c mutex使用示例

來自 mutex mjuteks 互斥 體 又稱同步基元使用了system.threading 命名空間。當建立乙個應用程式類時,將同時建立乙個系統範圍內的命名的mutex物件。這個互斥元在整個作業系統中都是可見的。當已經存在乙個同名的互斥元時,建構函式將會輸出乙個布林值。程式 通過檢測這個布林值來...

互斥體CMutex的使用

分類 2.4 執行緒 圖形學 2010 07 29 14 31 4512人閱讀收藏 舉報 attributes mfcsecurity null thread windows 互斥體是cmutex類的物件,也只允許乙個執行緒占有某個共享資源,以保護獨佔式共享資源。因此,互斥體的使用方法與臨界段的使用...