std::condition_variable_any
Определено в заголовке <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 может обеспечить лучшую производительность.
Члены-функции
| создаёт объект (публичный член-функция) |
|
| удаляет объект (публичный член-функция) |
|
| operator=
[удалено] |
не допускает присваивания (публичный член-функция) |
Уведомления |
|
| уведомляет одну ожидающую нить (публичный член-функция) |
|
| уведомляет все ожидающие нити (публичный член-функция) |
|
Ожидание |
|
| блокирует текущую нить до пробуждения условной переменной (публичный член-функция) |
|
| блокирует текущую нить до пробуждения условной переменной или истечения заданного тайм-аута (публичный член-функция) |
|
| блокирует текущую нить до пробуждения условной переменной или достижения заданного момента времени (публичный член-функция) |
|
Примечания
std::condition_variable_any может использоваться с std::shared_lock для ожидания std::shared_mutex в режиме совместного владения.
Возможным применением std::condition_variable_any с настраиваемыми типами Lockable является обеспечение удобных прерывимых ожиданий: операция блокировки настраиваемого мьютекса будет, как ожидается, блокировать связанный мьютекс и также выполнять необходимую настройку для уведомления данной условной переменной, когда получен сигнал прерывания.[1]
См. также
|
(C++11) |
предоставляет условную переменную, связанную с std::unique_lock (класс) |
Внешние ссылки
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/condition_variable_any