執行緒學習9 Mutex類

2021-05-26 03:08:47 字數 954 閱讀 3380

互斥:

在作業系統中,許多執行緒常常需要共享資源,而這些資源往往要求一次只能為乙個執行緒服務(排他性),這種排他性地使用共享資源稱為執行緒間的互斥。

執行緒互斥實質上也是同步,可以看做一種特殊的執行緒同步。

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...