Namespaces
Variants

std:: condition_variable_any

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
Condition variables
condition_variable_any
(C++11)
(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
ヘッダーで定義 <condition_variable>
class condition_variable_any ;
(C++11 以降)

condition_variable_any クラスは std::condition_variable の一般化です。 std::condition_variable std:: unique_lock < std:: mutex > でのみ動作するのに対し、 condition_variable_any BasicLockable 要件を満たす任意のロックで動作できます。

条件変数の意味論の説明については std::condition_variable を参照してください。

クラス std::condition_variable_any StandardLayoutType です。これは CopyConstructible MoveConstructible CopyAssignable 、または MoveAssignable ではありません。

ロックが std:: unique_lock < std:: mutex > の場合、 std::condition_variable はより優れたパフォーマンスを提供する可能性があります。

目次

メンバー関数

オブジェクトを構築する
(public member function)
オブジェクトを破棄する
(public member function)
operator=
[deleted]
コピー代入不可
(public member function)
通知
待機中の1つのスレッドに通知する
(public member function)
待機中の全てのスレッドに通知する
(public member function)
待機
条件変数が通知されるまで現在のスレッドをブロックする
(public member function)
条件変数が通知されるか、指定されたタイムアウト時間が経過するまで現在のスレッドをブロックする
(public member function)
条件変数が通知されるか、指定された時刻に達するまで現在のスレッドをブロックする
(public member function)

注記

std::condition_variable_any std::shared_lock と共に使用することで、共有所有権モードの std::shared_mutex を待機するために利用できます。

std::condition_variable_any の使用例として、カスタム Lockable 型を用いた割り込み可能な待機処理が挙げられます:カスタムロック操作は、関連付けられたミューテックスのロックを通常通り行うと同時に、割り込みシグナル受信時にこの条件変数へ通知するための必要な設定も実行します。 [1]

関連項目

std::unique_lock に関連付けられた条件変数を提供する
(class)

外部リンク

  1. Anthony Williams (2012年 初版 / 2019年 第2版), 「C++ Concurrency in Action」, 9.2.4 「 std::condition_variable_any での待機の中断」.