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 elapsed。 否则,该方法返回 cv_status::no_timeout

第二种方法返回 Pred的值。

备注

第一个方法进行阻止,直到 condition_variable_any 对象由调用终止到 notify_onenotify_all,或在时间间隔 Rel_time elapsed。 它可以程序集可以直接醒。

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

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

要求

condition_variable的标头:

命名空间: std

请参见

参考

condition_variable_any选件类

<condition_variable>