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


метод condition_variable::wait_for

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

template<
   class Rep,
   class Period
>
cv_status wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time
);
template<
   class Rep,
   class Period,
   class Predicate
>
bool wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time,
   PredicatePred
);

Параметры

  • Lck
    Объект unique_lock<mutex>.

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

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

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

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

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

Заметки

Первые блоки метода значение объекта condition_variable не просигнализированы вызовом 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 класс

<condition_variable>