Поделиться через


метод 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 пространство имен:

См. также

Ссылки

condition_variable класс

<condition_variable>