名前空間
変種
操作

std::shared_lock

提供: cppreference.com
< cpp‎ | thread
 
 
スレッドサポートライブラリ
スレッド
(C++11)
(C++20)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
相互排他
(C++11)
汎用ロック管理
(C++11)
shared_lock
(C++14)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
フューチャー
(C++11)
(C++11)
(C++11)
(C++11)
 
 
ヘッダ <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_variablestd::unique_lock を要求し、排他所有権モードでしか待機することができません)。

目次

[編集] テンプレート引数

Mutex - ロックする共有ミューテックスの型。 SharedMutex の要件を満たさなければなりません

[編集] メンバ型

定義
mutex_type Mutex

[編集] メンバ関数

shared_lock を構築し、オプションで指定されたミューテックスをロックします
(パブリックメンバ関数) [edit]
紐付けられているミューテックスのロックを解除します
(パブリックメンバ関数) [edit]
所有していればミューテックスのロックを解除し、別の所有権を取得します
(パブリックメンバ関数) [edit]
共有ロック
紐付けられているミューテックスをロックします
(パブリックメンバ関数) [edit]
紐付けられているミューテックスのロックを試みます
(パブリックメンバ関数) [edit]
指定された時間の間、紐付けられているミューテックスのロックを試みます
(パブリックメンバ関数) [edit]
指定された時点まで、紐付けられているミューテックスのロックを試みます
(パブリックメンバ関数) [edit]
紐付けられているミューテックスのロックを解除します
(パブリックメンバ関数) [edit]
変更
データメンバを他の shared_lock と交換します
(パブリックメンバ関数) [edit]
ロックを解除せずにミューテックスとの紐付けを解除します
(パブリックメンバ関数) [edit]
観察
紐付けられているミューテックスを指すポインタを返します
(パブリックメンバ関数) [edit]
紐付けられているミューテックスの所有権を保持しているかどうか調べます
(パブリックメンバ関数) [edit]
紐付けられているミューテックスの所有権を保持しているかどうか調べます
(パブリックメンバ関数) [edit]

[編集] 非メンバ関数

shared_lock に対する std::swap の特殊化
(関数テンプレート) [edit]

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
LWG 2981 C++17 shared_lock<Mutex> からの冗長な推定ガイドが提供されていました 削除されました