Spec-Zone.ru › C++

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=
[удалено]
не допускает присваивания
(публичный член-функция)
Уведомления
notify_one
уведомляет одну ожидающую нить
(публичный член-функция)
notify_all
уведомляет все ожидающие нити
(публичный член-функция)
Ожидание
wait
блокирует текущую нить до пробуждения условной переменной
(публичный член-функция)
wait_for
блокирует текущую нить до пробуждения условной переменной или истечения заданного тайм-аута
(публичный член-функция)
wait_until
блокирует текущую нить до пробуждения условной переменной или достижения заданного момента времени
(публичный член-функция)

Примечания

std::condition_variable_any может использоваться с std::shared_lock для ожидания std::shared_mutex в режиме совместного владения.

Возможным применением std::condition_variable_any с настраиваемыми типами Lockable является обеспечение удобных прерывимых ожиданий: операция блокировки настраиваемого мьютекса будет, как ожидается, блокировать связанный мьютекс и также выполнять необходимую настройку для уведомления данной условной переменной, когда получен сигнал прерывания.[1]

См. также

condition_variable
(C++11)
предоставляет условную переменную, связанную с std::unique_lock
(класс)

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

  1. Anthony Williams (2012, 1-е изд./2019, 2-е изд.), «C++ Concurrency in Action», 9.2.4 «Прерывание ожидания std::condition_variable_any».

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/condition_variable_any

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API