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_one 或 notify_all 的呼叫發出之信號,或直到經過 Rel_time 的時間間隔。 它可能是偽造式的喚醒。
第二個實際執行方法為下列程式碼。
while(!Pred())
if(wait_for(Lck, Rel_time) == cv_status::timeout)
return Pred();
return true;
需求
標頭: condition_variable
命名空間: std