C++ の名前付き要件: SharedLockable (C++14 以降)
From cppreference.com
SharedLockable の要件は、実行エージェント (スレッドなど) の共有ブロッキングセマンティクスを提供する型の最小限の特性を記述します。
目次 |
[編集] 要件
型 L が SharedLockable であるためには、型 L のオブジェクト m に対して以下の条件が満たされている必要があります。
| Expression | 事前条件 | 効果 | 戻り値 |
|---|---|---|---|
| m.lock_shared() | 現在の実行エージェント (スレッド、プロセス、タスク) のロックが取得できるまでブロックします。例外がスローされた場合、ロックは取得されません。 | ||
| m.try_lock_shared() | ブロックせずに、現在の実行エージェント (スレッド、プロセス、タスク) のロックを取得しようとします。例外がスローされた場合、ロックは取得されません。 | ロックが取得された場合は true、それ以外の場合は false | |
| m.unlock_shared() | 現在の実行エージェントは m に対する共有ロックを保持しています。 |
実行エージェントによって保持されている共有ロックを解放します。 例外を投げません。 |
[編集]
オブジェクトに対するロックは、lock_shared、try_lock_shared、try_lock_shared_for、または try_lock_shared_until メンバ関数の呼び出しによって取得された場合、共有ロック と呼ばれます。
[編集] 標準ライブラリ
以下の標準ライブラリ型は SharedLockable の要件を満たします。
| (C++17) |
共有相互排他機能を提供する (クラス) |
| (C++14) |
共有相互排他機能を提供し、タイムアウト付きのロックを実装する (クラス) |