std::shared_lock
From 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の要件は満たしません。
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) | |
[編集] 非メンバ関数
| (C++14) |
std::swap アルゴリズムを特殊化する (関数テンプレート) |
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2981 | C++17 | shared_lock<Mutex>からの冗長な推論ガイドが提供されていた |
削除 |