若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

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

傳回 truefalse 的任何運算式。

如果在 Rel_time 的時間中等候停止,第一個方法會傳回 cv_status::timeout 否則,方法會傳回 cv_status::no_timeout

第二個方法會傳回 Pred 的值。

第一個方法會封鎖直到 condition_variable 物件得到對 notify_onenotify_all 的呼叫發出之信號,或直到經過 Rel_time 的時間間隔。 它可能是偽造式的喚醒。

第二個實際執行方法為下列程式碼。

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

需求

標頭: condition_variable

命名空間: std

顯示: