C++ named requirements: SharedTimedMutex (since C++14)
From cppreference.net
C++
C++ named requirements
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SharedTimedMutex の要件は、 TimedMutex の要件を拡張し、共有ロック所有権モードを含むようにしたものです。
要件
さらに、
m
という
SharedTimedMutex
型のオブジェクトは、時間指定共有操作をサポートします:
- The expression m. try_lock_shared_for ( duration ) は以下の特性を持ちます
-
- アトミック操作として振る舞う。
-
durationで指定された期間内にミューテックスの共有所有権の取得を試みる。durationがduration.zero()以下である場合、待機せずに所有権の取得を試みる(try_lock()による場合と同様)。それ以外の場合、この関数はミューテックスが取得されるか、durationで指定された時間が経過するまでブロックする。成功した場合にのみduration内に戻るが、duration中のある時点で他のスレッドによって所有されていなかった場合でも、ミューテックスの取得に失敗することが許容される。いずれの場合も、ミューテックスが取得された場合はtrueを、それ以外の場合はfalseを返す。 -
try_lock_shared_for(duration)が成功した場合、同じオブジェクトに対する以前のunlock()操作はこの操作と 同期する (release-acquire std::memory_order と等価)。 - 呼び出しスレッドが既に何らかのモードでミューテックスを所有している場合、動作は未定義である。
- 実行中にクロック、時間点、または期間によって例外がスローされる可能性がある(標準ライブラリで提供されるクロック、時間点、および期間は例外をスローしない)。
- 例外がスローされた場合、共有ロックは取得されない。
- The expression m. try_lock_shared_until ( time_point ) は以下の特性を持ちます
-
- アトミック操作として振る舞う。
-
time_pointまでにミューテックスの共有所有権の取得を試みる。time_pointが既に経過している場合は、ロックせずに所有権の取得を試みる(try_lock()と同様)。 それ以外の場合、この関数はミューテックスが取得されるか、time_pointで指定された時間が経過するまでブロックする。 成功した場合のみtime_pointより前に返るが、time_point前の時点で他のスレッドによって所有されていなかった場合でも、 ミューテックスの取得に失敗することが許容される。いずれの場合も、ミューテックスが取得された場合は true を、それ以外の場合は false を返す。 -
try_lock_shared_until(time_point)が成功した場合、同じオブジェクトに対する以前のunlock()操作はこの操作と同期する(release-acquire std::memory_order と等価)。 - 呼び出しスレッドが既に何らかのモードでミューテックスを所有している場合、動作は未定義である。
- 実行中にクロック、時間点、または期間によって例外がスローされる可能性がある(標準ライブラリが提供するクロック、時間点、期間は例外をスローしない)。
- 例外がスローされた場合、共有ロックは取得されない。
標準ライブラリ
以下の標準ライブラリ型は SharedTimedMutex の要件を満たします:
|
(C++14)
|
共有ミューテックス機能を提供し、タイムアウト付きロックを実装する
(クラス) |