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


Метод condition_variable_any::wait_for

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

template<
   class Lock,
   class Rep,
   class Period
>
bool wait_for(
   Lock& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time
);
template<
   class Lock,
   class Rep,
   class Period,
   class Predicate
>
bool wait_for(
   Lock& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time,
   Predicate Pred
);

Параметры

  • Lck
    Объект mutex любого типа.

  • Rel_time
    Объект chrono::duration, который определяет количество времени до поток активируется.

  • Pred
    Любое выражение, которое возвращает true или false.

Возвращаемое значение

Первый метод возвращает cv_status::timeout, если время ожидания завершения при Rel_time истекало. В противном случае метод возвращает cv_status::no_timeout.

Второй метод возвращает значение Pred.

Заметки

Первый метод блокируется до объекта condition_variable_any не просигнализированы вызовом метода notify_one или notify_all, или пока временного интервала Rel_time не будет истекать. Кроме того, проспать вверх паразитно.

Второй метод фактически выполняет следующий код.

while(!Pred())
   if(wait_for(Lck, Rel_time) == cv_status::timeout)
      return Pred();
return true;

Требования

Заголовок: condition_variable

Пространство имен: std

См. также

Ссылки

Класс condition_variable_any

<condition_variable>