std::shared_lock
提供: cppreference.com
| ヘッダ <shared_mutex> で定義
|
||
| template< class Mutex > class shared_lock; |
(C++14以上) | |
shared_lock クラスは遅延ロック、タイムアウト付きロック、ロック所有権の転送をサポートする汎用の共有ミューテックス所有権ラッパーです。 shared_lock は紐付けられている共有ミューテックスを共有モードでロックします (排他モードでロックするためには std::unique_lock を使用できます)。
shared_lock クラスはムーブ可能ですが、コピー可能ではありません。 MoveConstructible および MoveAssignable の要件は満たしますが、 CopyConstructible および CopyAssignable の要件は満たしません。
共有ミューテックスを共有所有権モードで待機するためには、 std::condition_variable_any を使用することができます (std::condition_variable は std::unique_lock を要求し、排他所有権モードでしか待機することができません)。
目次 |
[編集] テンプレート引数
| Mutex | - | ロックする共有ミューテックスの型。 SharedMutex の要件を満たさなければなりません |
[編集] メンバ型
| 型 | 定義 |
mutex_type
|
Mutex |
[編集] メンバ関数
shared_lock を構築し、オプションで指定されたミューテックスをロックします (パブリックメンバ関数) | |
| 紐付けられているミューテックスのロックを解除します (パブリックメンバ関数) | |
| 所有していればミューテックスのロックを解除し、別の所有権を取得します (パブリックメンバ関数) | |
共有ロック | |
| 紐付けられているミューテックスをロックします (パブリックメンバ関数) | |
| 紐付けられているミューテックスのロックを試みます (パブリックメンバ関数) | |
| 指定された時間の間、紐付けられているミューテックスのロックを試みます (パブリックメンバ関数) | |
| 指定された時点まで、紐付けられているミューテックスのロックを試みます (パブリックメンバ関数) | |
| 紐付けられているミューテックスのロックを解除します (パブリックメンバ関数) | |
変更 | |
| データメンバを他の shared_lock と交換します (パブリックメンバ関数) | |
| ロックを解除せずにミューテックスとの紐付けを解除します (パブリックメンバ関数) | |
観察 | |
| 紐付けられているミューテックスを指すポインタを返します (パブリックメンバ関数) | |
| 紐付けられているミューテックスの所有権を保持しているかどうか調べます (パブリックメンバ関数) | |
| 紐付けられているミューテックスの所有権を保持しているかどうか調べます (パブリックメンバ関数) | |
[編集] 非メンバ関数
shared_lock に対する std::swap の特殊化 (関数テンプレート) |
[編集] 欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
| DR | 適用先 | 発行時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2981 | C++17 | shared_lock<Mutex> からの冗長な推定ガイドが提供されていました
|
削除されました |

