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_onenotify_all 或者时间间隔 Rel_time 消失。 它也可以不合逻辑地唤醒。

第二个方法实际执行以下代码。

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

要求

Header: condition_variable

命名空间: std

请参见

参考

condition_variable_any 类

<condition_variable>