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 является типом со стандартным расположением. Он не является копируемым, перемещаемым, копируемо-присваиваемым или перемещаемо-присваиваемым.

Если блокировкой является 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/cpp/thread/condition_variable_any

Spec-Zone.ru

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