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 для описания семантики condition variables.

Класс 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)
Уведомление
уведомляет один ожидающий поток
(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
(класс)

Внешние ссылки

  1. Энтони Уильямс (2012, 1-е изд./ 2019, 2-е изд.), "C++ Concurrency in Action", 9.2.4 "Прерывание ожидания на std::condition_variable_any ".