共用方式為


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 的任何運算式。

傳回值

如果在 Rel_time 的時間中等候停止,第一個方法會傳回 cv_status::timeout。 否則,方法會傳回 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;

需求

標頭: condition_variable

命名空間: std

請參閱

參考

condition_variable_any 類別

<condition_variable>