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


Метод condition_variable_any::wait_until

Блокирующий поток, и задает максимальный момент времени, в которой поток разблокирует.

template<class Lock, class Clock, class Duration>
   void wait_until(
      Lock& Lck, 
      const chrono::time_point<Clock, Duration>& Abs_time);
template<class Lock, class Clock, class Duration, class Predicate>
   void wait_until(
      Lock& Lck,
      const chrono::time_point<Clock, Duration>& Abs_time,
      Predicate Pred);
template<class Lock>
   void wait_until(
      Lock Lck,
      const xtime *Abs_time);
template<class Lock, class Predicate>
   void wait_until(
      Lock Lck,
      const xtime *Abs_time,
      Predicate Pred);

Параметры

  • Lck
    Объект мьютекса.

  • 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>