recursive_timed_mutex クラス
timed 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 の所有権を解放します。 |
要件
ヘッダー:<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
メソッドが mutex
の所有権の取得を試行する時間について、その最大値を指定する chrono::duration オブジェクト。
戻り値
メソッドが 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
を返し、以前のロックは有効のままになります。
ロック解除
mutex
の所有権を解放します。
void unlock();
解説
このメソッドが mutex
の所有権を開放するのは、lock、try_lock、try_lock_for、および try_lock_until が recursive_timed_mutex
オブジェクト上で正常に呼び出されたのと同じ回数だけ呼び出された後のみです。
呼び出しスレッドが mutex
を所有していない場合の動作は未定義です。