<mutex>

包含標準標頭 Mutex <> 定義類別 mutexrecursive_mutextimed_mutexrecursive_timed_mutex;範本的 lock_guardunique_lock;並支援定義互斥程式碼區域的型別和函式。

此標題使用並行執行階段 (ConcRT),以便與其他 ConcRT 機制一起使用。 如需 ConcRT 的詳細資訊,請參閱並行執行階段

#include <mutex>

備註

注意事項注意事項

/clr/clr:pure 編譯的程式碼,這個標題會封鎖。

類別 mutexrecursive_mutex 為 型別。 Mutex 型別有預設建構函式且不會擲回例外狀況的解構函式。 這些物件會提供互斥的方法,當多個執行緒嘗試鎖定相同物件時。 具體來說, Mutex 型別包含方法 locktry_lockunlock:

  • lock 方法會封鎖呼叫執行緒,直到執行緒取得 Mutex 的擁有權。 其會忽略傳回值。

  • try_lock 方法會嘗試取得 Mutex 的擁有權,而不需封鎖。 它的傳回型別可以轉換成 bool 則為 true ,如果方法取得擁有權,,但是若非如此則為 false。

  • unlock 方法會從呼叫的執行緒釋出 Mutex 的擁有權。

您可以使用 Mutex 型別做為型別引數具現化樣板 lock_guardunique_lock。 您可以使用這些型別物件做為 Lock 引數的等候成員函式在範本 condition_variable_any

一個 計時 Mutex 型別 符合 Mutex 類型的要求。 此外,還有一些可呼叫之使用一個引數的 try_lock_fortry_lock_until 方法,而且必須傳回可以轉換成 bool的型別。 在這些額外的引數都具有預設值的情況下,使用其他引數,一個計時 Mutex 型別可以定義這些函式。

  • try_lock_for 方法必須是可使用一個引數,則為 Rel_time,型別為 chrono::duration的具現化。 不管成功,方法會嘗試取得 Mutex 的擁有權,不過,在 Rel_time指定的時間內時,就會傳回。 如果方法取得擁有權,傳回值會轉換為 true ;否則, false的傳回值轉換成。

  • try_lock_until 方法必須是可使用一個引數,則為 Abs_time,型別為 chrono::time_point的具現化。 不管成功,方法即晚於為由 Abs_time指定的時間嘗試取得 Mutex 的擁有權,,但傳回的是,不會建立。 如果方法取得擁有權,傳回值會轉換為 true ;否則, false的傳回值轉換成。

也稱為 Mutex 型別是 可鎖定的類型。 如果不提供成員函式 try_lock,它是一個 基本的可鎖定的類型。 也稱為一個計時 Mutex 型別為 時間可鎖定的類型。

類別

Name

說明

lock_guard 類別

表示可以執行個體化建立物件解構函式開啟 mutex的範本。

mutex 類別 (STL)

表示 mutex 型別。 使用這個型別的物件強制執行在程式內的互斥。

recursive_mutex 類別

表示 mutex 型別。 在 mutex 類別的 constrast,呼叫已經鎖定物件的鎖定所以方法的行為就是妥善定義的。

recursive_timed_mutex 類別

代表一個時間的型別。 使用這個型別的物件強制執行有在程式中定期有限的封鎖互斥。 不同於 timed_mutex型別的物件,請呼叫 recursive_timed_mutex 物件的鎖定方法的作用是妥善定義的。

timed_mutex 類別

代表一個時間的型別。 使用這個型別的物件強制執行有在程式中定期有限的封鎖互斥。

unique_lock 類別

表示可以執行個體化建立物件處理鎖定和解除鎖定 mutex的範本。

函式

Name

說明

call_once 函式

為實際呼叫指定之可呼叫的物件提供一個機制一次執行時。

lock 函式

嘗試鎖定任何引數,而不會發生死結。

Structs

Name

說明

adopt_lock_t 結構

表示用於 adopt_lock的型別。

defer_lock_t 結構

表示定義 defer_lock 物件用來選取其中一個 unique_lock多載建構函式的型別。

once_flag 結構

表示 struct 用來與樣板函式 call_once 即使在執行之前多執行緒可確保的初始化程式碼只能呼叫一次,。

try_to_lock_t 結構

表示定義 try_to_lock 物件並使用選取其中一個 unique_lock多載建構函式的 struct 。

變數

Name

說明

adopt_lock 變數

表示可以傳遞至 lock_guardunique_lock 的建構函式中指定的物件也會傳遞至建構函式鎖定的 Mutex 物件。

defer_lock 變數

表示可以傳遞至 unique_lock之建構函式的物件,表示建構函式不應該鎖定也會傳遞給它的 Mutex 物件。

try_to_lock 變數

表示可以傳遞至 unique_lock 的建構函式中指定的物件也會傳遞給它,而不封鎖的建構函式應該嘗試開啟 mutex

請參閱

其他資源

C++ 標準程式庫標頭檔