共用方式為


<mutex>

包含標準標頭<mutex>,以定義類別mutexrecursive_mutextimed_mutex和 ;範本lock_guardrecursive_timed_mutexunique_lock;以及支援定義互斥程式代碼區域的類型和函式。

警告

從 Visual Studio 2015 開始,C++標準連結庫同步處理類型是以 Windows 同步處理基本類型為基礎,不再使用 ConcRT(除非目標平臺為 Windows XP)。 中 <mutex> 定義的類型不應與任何 ConcRT 類型或函式搭配使用。

需求

標頭: <mutex>

命名空間std

備註

注意

在使用 /clr編譯的程序代碼中,會封鎖此標頭。

類別 mutexrecursive_mutexmutex 類型。 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具現化。 此方法會嘗試取得 mutex 的擁有權,但會在不晚於 Abs_time 所指定的時間內傳回,無論是否成功。 如果方法取得擁有權,則傳回值會轉換成 true,否則傳回值將轉換成 false

mutex 類型也稱為「可鎖定類型」。 如果它未提供成員函 try_lock式,則它是 基本的可鎖定類型。 定時 Mutex 類型稱為 可計時鎖定類型。 可 計時鎖定類型 會封鎖指定的時間量,或直到取得 Mutex 上的鎖定為止。

成員

類別

名稱 描述
lock_guard 表示可以具現化的範本,以建立解構函式解除鎖定 Mutex 的物件。
mutex 類別(C++標準連結庫) 表示 mutex 型別。 使用這個型別的物件來強制程式內的互斥。
recursive_mutex 表示 mutex 型別。 與類別 mutex 不同,針對已鎖定的物件呼叫鎖定方法的行為已妥善定義。
recursive_timed_mutex 使用這個型別的物件來強制程式內限時的互斥。 不同於 timed_mutex,針對 recursive_timed_mutex 物件呼叫鎖定方法的效果已妥善定義。
scoped_lock
timed_mutex 使用這個型別的物件來強制程式內限時的互斥。
unique_lock 表示可具現化的範本,以建立管理 Mutex 鎖定和解除鎖定的物件。

函式

名稱 描述
call_once 提供用來呼叫指定之可呼叫物件一次執行期間的機制。
lock 會嘗試鎖定所有不包含死結的引數。
swap 試著交換兩個 mutex 物件的內部狀態, x 以及 y
try_lock 嘗試鎖定可鎖定的物件。 立即傳回 。

結構

名稱 描述
adopt_lock_t 結構 表示用來定義 adopt_lock 的型別。
defer_lock_t 結構 表示定義 defer_lock 物件的型別,該物件用來選取 unique_lock 的其中一個多載建構函式。
once_flag 結構 表示搭配範本函式 call_once 使用的 struct,以確保即使執行多個執行緒,該初始化程式碼僅會呼叫一次。
try_to_lock_t 結構 表示定義 try_to_lock 物件的 struct,該物件用來選取 unique_lock 的其中一個多載建構函式。

變數

名稱 描述
adopt_lock 表示可以傳遞給 和 unique_lock 建構函式的物件,表示mutex也傳遞至建構lock_guard函式的物件已鎖定。
defer_lock 表示可以傳遞至 建構函式的物件 unique_lock,表示建構函式不應該鎖定 mutex 也傳遞給它的物件。
try_to_lock 表示可以傳遞給 建 unique_lock 構函式的物件,表示建構函式應該嘗試解除鎖定 mutex 也傳遞給它的物件,而不會封鎖。

另請參閱

標頭檔參考