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
, в точке вызова. Если таких потоков нет, функция не имеет никакого эффекта.