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 と交換します (パブリックメンバ関数) | |
ロックを解除せずにミューテックスとの紐付けを解除します (パブリックメンバ関数) | |
観察 | |
紐付けられているミューテックスを指すポインタを返します (パブリックメンバ関数) | |
紐付けられているミューテックスの所有権を保持しているかどうか調べます (パブリックメンバ関数) | |
紐付けられているミューテックスの所有権を保持しているかどうか調べます (パブリックメンバ関数) |
[編集] 非メンバ関数
(C++14) |
shared_lock に対する std::swap の特殊化 (関数テンプレート) |
[編集] 欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
DR | 適用先 | 発行時の動作 | 正しい動作 |
---|---|---|---|
LWG 2981 | C++17 | shared_lock<Mutex> からの冗長な推定ガイドが提供されていました
|
削除されました |