typedef std::chrono::duration
typedef std::chrono::time_point<
static const bool is_steady =
static time_point now() noexcept;
};
D.2. Заголовок
Заголовок предоставляет доступ к условным переменным. Это базовый механизм синхронизации, который позволяет блокировать поток до получения уведомления о том, что выполнено некоторое условие или истек таймаут.
Содержимое заголовка
namespace std {
enum class cv_status { timeout, no_timeout };
class condition_variable;
class condition_variable_any;
}
D.2.1. Класс std::condition_variable
Класс std::condition_variable позволяет потоку ждать выполнения условия.
Экземпляры этого класса не удовлетворяют концепциям CopyAssignable, CopyConstructible, MoveAssignable, MoveConstructible.
class condition_variable {
public:
condition_variable();
~condition_variable();
condition_variable(condition_variable const&) = delete;
condition_variable& operator=(
condition_variable const&) = delete;
void notify_one() noexcept;
void notify_all() noexcept;
void wait(std::unique_lock
template
void wait(std::unique_lock
template
cv_status wait_until(
std::unique_lock
const std::chrono::time_point
template
bool wait_until(
std::unique_lock
const std::chrono::time_point
Predicate pred);
template
cv_status wait_for(
std::unique_lock
const std::chrono::duration
template
bool wait_for(
std::unique_lock
const std::chrono::duration
Predicate pred);
};
void notify_all_at_thread_exit(
condition_variable&, unique_lock
STD::CONDITION_VARIABLE, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект типа std::condition_variable.
condition_variable();
Конструирует объект типа std::condition_variable.
Исключение типа std::system_error, если сконструировать условную переменную не получилось.
STD::CONDITION_VARIABLE, ДЕСТРУКТОР
Уничтожает объект std::condition_variable.
~condition_variable();
Не существует потоков, заблокированных по *this в обращениях к wait(), wait_for() или wait_until().
Уничтожает *this.
Нет.
STD::CONDITION_VARIABLE::NOTIFY_ONE, ФУНКЦИЯ-ЧЛЕН
Пробуждает один из потоков, ожидающих std::condition_variable.
void notify_one() noexcept;
Пробуждает один из потоков, ожидающих *this, в точке вызова. Если таких потоков нет, функция не имеет никакого эффекта.
Исключение типа std::system_error, если действие не выполнено.
Обращения к функциям notify_one(), notify_all(), wait(), wait_for() и wait_until() одного и того же объекта std::condition_variable сериализуются. Обращение к notify_one() или notify_all() будит только потоки, запущенные
STD::CONDITION_VARIABLE::NOTIFY_ALL, ФУНКЦИЯ-ЧЛЕН
Пробуждает все потоки, ожидающие std::condition_variable.
void notify_all() noexcept;
Пробуждает все потоки, ожидающие *this, в точке вызова. Если таких потоков нет, функция не имеет никакого эффекта.