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