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的運算式。
傳回值
第一個方法會傳回 cv_status::timeout ,如果等候結束時, Rel_time 耗用的時間。 否則,方法會傳回 cv_status::no_timeout。
第二個方法會傳回 Pred的值。
備註
在 condition_variable_any 物件的第一個方法區塊是由 notify_one 或 notify_all的呼叫發出信號為止,或直到間隔 Rel_time 耗用的時間。 它可以偽造維持喚醒。
第二個方法實際執行下列程式碼。
while(!Pred())
if(wait_for(Lck, Rel_time) == cv_status::timeout)
return Pred();
return true;
需求
condition_variable 的標題:
命名空間: std