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
    mutex对象。

  • Abs_time
    chrono::time_point 对象。

  • Pred
    返回 true 或 false的任何表达式。

返回值

返回 cv_status 类型的方法返回 cv_status::timeout,如果等待终止,当 Abs_time 段。 否则,方法返回 cv_status::no_timeout

返回 bool 的方法返回 Pred的值。

备注

第一个方法进行阻止,直到 condition_variable 对象由调用终止到 notify_onenotify_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>