Namespaces
Variants

std:: shared_lock

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
(C++11)
(C++11)
shared_lock
(C++14)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
ヘッダーで定義 <shared_mutex>
template < class Mutex >
class shared_lock ;
(C++14以降)

shared_lock クラスは、遅延ロック、時間指定ロック、ロック所有権の転送を可能にする汎用共有ミューテックス所有権ラッパーです。 shared_lock をロックすると、関連付けられた共有ミューテックスが共有モードでロックされます(排他モードでロックするには、 std::unique_lock を使用できます)。

shared_lock クラスはムーブ可能ですが、コピー可能ではありません – これは MoveConstructible および MoveAssignable の要件を満たしますが、 CopyConstructible CopyAssignable の要件は満たしません。

shared_lock Lockable 要件を満たす。 Mutex SharedTimedLockable 要件を満たす場合、 shared_lock TimedLockable 要件も満たす。

共有所有権モードで共有ミューテックスの待機を行うには、 std::condition_variable_any を使用できます( std::condition_variable std::unique_lock を必要とするため、排他所有権モードでのみ待機可能です)。

目次

テンプレートパラメータ

Mutex - 共有ミューテックスの型。この型は SharedLockable 要件を満たさなければならない

メンバー型

定義
mutex_type Mutex

メンバー関数

shared_lock を構築し、オプションで指定されたミューテックスをロックする
(public member function)
関連付けられたミューテックスをアンロックする
(public member function)
所有している場合はミューテックスをアンロックし、別のミューテックスの所有権を取得する
(public member function)
共有ロック
関連付けられたミューテックスをロックする
(public member function)
関連付けられたミューテックスのロックを試みる
(public member function)
指定された期間、関連付けられたミューテックスのロックを試みる
(public member function)
指定された時間ポイントまで、関連付けられたミューテックスのロックを試みる
(public member function)
関連付けられたミューテックスをアンロックする
(public member function)
修飾子
データメンバを別の shared_lock と交換する
(public member function)
アンロックせずにミューテックスとの関連付けを解除する
(public member function)
オブザーバ
関連付けられたミューテックスへのポインタを返す
(public member function)
ロックが関連付けられたミューテックスを所有しているかどうかをテストする
(public member function)
ロックが関連付けられたミューテックスを所有しているかどうかをテストする
(public member function)

非メンバー関数

std::swap アルゴリズムを特殊化
(関数テンプレート)

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2981 C++17 shared_lock<Mutex> からの冗長なデダクションガイドが提供されていた 削除