recursive_timed_mutex 類別
表示「計時 mutex 類型」。 藉由在程式內使用限時的封鎖,可以使用這個類型的物件來強制執行互斥。 不同於 timed_mutex 類型的物件,已針對 recursive_timed_mutex
物件妥善定義呼叫鎖定方法的效果。
語法
class recursive_timed_mutex;
成員
公用建構函式
名稱 | 描述 |
---|---|
recursive_timed_mutex | 建構未鎖定的 recursive_timed_mutex 物件。 |
~recursive_timed_mutex 解構函式 | 釋出 recursive_timed_mutex 物件所使用的任何資源。 |
公用方法
名稱 | 描述 |
---|---|
lock | 封鎖呼叫的執行緒,直到執行緒取得 mutex 的擁有權。 |
try_lock | 嘗試在不造成封鎖的情況下,取得 mutex 的擁有權。 |
try_lock_for | 嘗試取得所指定時間間隔內 mutex 的所有權。 |
try_lock_until | 嘗試取得所指定時間間隔之前 mutex 的所有權。 |
unlock | 釋放 mutex 的擁有權。 |
需求
Header:<mutex>
命名空間:std
lock
封鎖呼叫的執行緒,直到執行緒取得 mutex
的擁有權。
void lock();
備註
如果呼叫執行緒已經擁有 mutex
,方法會立即傳回,而先前的鎖定仍持續有效。
recursive_timed_mutex 建構函式
建構未鎖定的 recursive_timed_mutex
物件。
recursive_timed_mutex();
~recursive_timed_mutex 解構函式
釋出 recursive_timed_mutex
物件所使用的任何資源。
~recursive_timed_mutex();
備註
如果執行解構函式時物件已鎖定,則行為是未定義的。
try_lock
嘗試在不造成封鎖的情況下,取得 mutex
的擁有權。
bool try_lock() noexcept;
傳回值
如果方法成功取得 mutex
的擁有權,或是呼叫執行緒已經擁有 mutex
,即為 true
,否則為 false
。
備註
如果呼叫執行緒已經擁有 mutex
,函式會立即傳回 true
,而先前的鎖定仍持續有效。
try_lock_for
嘗試在不造成封鎖的情況下,取得 mutex
的擁有權。
template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);
參數
Rel_time
chrono::duration 物件,此物件會指定方法嘗試取得 mutex
擁有權的時間上限。
傳回值
如果方法成功取得 mutex
的擁有權,或是呼叫執行緒已經擁有 mutex
,即為 true
,否則為 false
。
備註
如果呼叫執行緒已經擁有 mutex
,方法會立即傳回 true
,而先前的鎖定仍持續有效。
try_lock_until
嘗試在不造成封鎖的情況下,取得 mutex
的擁有權。
template <class Clock, class Duration>
bool try_lock_for(const chrono::time_point<Clock, Duration>& Abs_time);
bool try_lock_until(const xtime* Abs_time);
參數
Abs_time
這個時間點所指定的臨界值一超過,方法就不再嘗試取得 mutex
的擁有權。
傳回值
如果方法成功取得 mutex
的擁有權,或是呼叫執行緒已經擁有 mutex
,即為 true
,否則為 false
。
備註
如果呼叫執行緒已經擁有 mutex
,方法會立即傳回 true
,而先前的鎖定仍持續有效。
unlock
釋放 mutex
的擁有權。
void unlock();
備註
這個方法只會在呼叫它的次數與在 recursive_timed_mutex
物件上成功呼叫 lock、try_lock、try_lock_for 及 try_lock_until 的次數一樣多之後,才會釋放 mutex
的擁有權。
如果呼叫的執行緒未擁有 mutex
,則行為是未定義的。