互斥:
在作業系統中,許多執行緒常常需要共享資源,而這些資源往往要求一次只能為乙個執行緒服務(排他性),這種排他性地使用共享資源稱為執行緒間的互斥。
執行緒互斥實質上也是同步,可以看做一種特殊的執行緒同步。
mutex類:
執行緒的互斥常用mutex類實現,利用它可以對資源進行獨占性訪問。
與monitor類相似,只有獲取mutex物件的所屬權的執行緒才能進入臨界區,未獲得mutex物件所屬權的執行緒只能在臨界區外等待。
使用mutex類要比使用monitor類消耗更多的系統資源,但它可以跨越應用程式邊界,在多個應用程式之間進行同步。
mutex類的部分方法:
waitone():請求互斥體的所屬權,只有請求道所屬權後執行緒才能進入臨界區。
releasemutex():釋放互斥體的所屬權。
openexisting():開啟現有的已命名互斥體。
mutex類的使用方法:
mutex類是非靜態類,使用時必須建立乙個mutex物件。
在mutex類的建構函式中,可以制定互斥鎖定是否最初由呼叫執行緒擁有,定義互斥鎖定的名稱,獲得互斥鎖定是否已存在的資訊。
bool mcreatednew;
mutex mutex=new mutex(false,"procsharpmutex",out mcreatenew);
在上面的示例中,第三個引數定義為輸出引數,接受乙個表示互斥鎖定是否為新建立的布林值。如果返回的值是false,就表示互斥鎖定已經定義。
互斥鎖定可以在另一程序中定義,因為作業系統知道有名稱的互斥鎖定,它由不同的程序共享。
如果沒有給互斥鎖定指定名稱,互斥鎖定就是未命名的,不在不同的程序之間共享。
C 多執行緒 mutex類 (三)
mutex 類 詳細方法介紹參見c ref recursive mutex timed mutex recursive timed mutex 整合了recursive mutex和timed mutex特性 lock方法執行區別 對任意的mutex type物件,若其 cur mutex 已被其他...
關於使用Mutex類來實現執行緒同步
using system using system.threading namespace threaddemo mutex else 當主程式啟動時,定義了乙個指定名稱的互斥量,設定initialowner標誌為false。這意味著如果互斥量已經被建立,則允許程式獲取該互斥量。如果沒有獲取該互斥量...
C 11多執行緒 mutex學習
一頭檔案內容簡介 classes 1.1 mutexes mutex mutexclass class recursive mutex recursivemutex class class time mutex timedmutex class class recursive timed mutex...