共用方式為


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>