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=
[удалён] | копирующее присваивание недоступно (открытая функция-член) |
Уведомление |
|
| уведомляет один ожидающий поток (открытая функция-член) |
|
| уведомляет все ожидающие потоки (открытая функция-член) |
|
Ожидание |
|
| блокирует текущий поток до пробуждения условной переменной (открытая функция-член) |
|
| блокирует текущий поток до пробуждения условной переменной или истечения заданного времени ожидания (открытая функция-член) |
|
| блокирует текущий поток до пробуждения условной переменной или наступления заданного момента времени (открытая функция-член) |
|
Примечания
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/cpp/thread/condition_variable_any