C++ named requirements: BasicLockable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BasicLockable 要件は、実行エージェント(すなわちスレッド)に対して排他的なブロッキングセマンティクスを提供する型の最小限の特性を記述します。
目次 |
要件
型
L
が
BasicLockable
であるためには、型
L
のオブジェクト
m
に対して以下の条件が満たされなければならない:
| 式 | 事前条件 | 効果 |
|---|---|---|
| m. lock ( ) | 現在の実行エージェント(スレッド、プロセス、タスク)がロックを獲得できるまでブロックする。例外がスローされた場合、ロックは獲得されない。 | |
| m. unlock ( ) |
現在の実行エージェントが
m
に対する非共有ロックを保持している。
|
実行エージェントが保持している非共有ロックを解放する。
例外をスローしない。 |
非共有ロック
オブジェクトのロックは、
lock
、
try_lock
、
try_lock_for
、または
try_lock_until
メンバー関数の呼び出しによって取得された場合、
非共有ロック
と呼ばれます。
標準ライブラリ
以下の標準ライブラリ型は BasicLockable 要件を満たします:
|
(C++11)
|
基本的な相互排他機能を提供する
(class) |
|
(C++11)
|
同じスレッドで再帰的にロック可能な相互排他機能を提供する
(class) |
|
(C++11)
|
同じスレッドで再帰的にロック可能で、
タイムアウト付きロックを実装する相互排他機能を提供する (class) |
|
(C++17)
|
共有相互排他機能を提供する
(class) |
|
(C++14)
|
共有相互排他機能を提供し、タイムアウト付きロックを実装する
(class) |
|
(C++11)
|
タイムアウト付きロックを実装する相互排他機能を提供する
(class) |