метод condition_variable::wait_until
Блокирующий поток, и устанавливает максимальный момента времени, на котором потока разблокирует.
template<
class Clock,
class Duration
>
cv_status wait_until(
unique_lock<mutex>& Lck,
const chrono::time_point<Clock,
Duration>& Abs_time
);
template<
class Clock,
class Duration,
class Predicate
>
bool wait_until(
unique_lock<mutex>& Lck,
const chrono::time_point<Clock,
Duration>& Abs_time,
Predicate Pred
);
cv_status wait_until(
unique_lock<mutex>& Lck,
const xtime *Abs_time
);
template<class Predicate>
bool wait_until(
unique_lock<mutex>& Lck,
const xtime *Abs_time,
Predicate Pred
);
Параметры
Lck
Объект unique_lock<mutex>.Abs_time
Объект chrono::time_point.Pred
Любое выражение, возвращающее true или false.
Возвращаемое значение
Методы, возвращающие получение cv_status::timeout типа cv_status если ожидание завершается, когда истекает Abs_time.В противном случае методы возвращают cv_status::no_timeout.
Методы, возвращающие bool возвращают значение Pred.
Заметки
Первые блоки метода значение объекта condition_variable не просигнализированы вызовом notify_one или notify_all или до Abs_time.Он также может паразитно пробудиться.
Второй метод фактически выполняет следующий код.
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
Третье и четвертое методы используют указатель на объект типа xtime, чтобы заменить объект chrono::time_point.Объект xtime указывающее максимальное время ожидания сигнала.
Требования
заголовок: condition_variable
Std пространство имен: