condition_variable::wait_until 方法
封鎖執行緒,並將執行緒解除封鎖的最大時間點。
template<
class Clock,
class Duration
>
cv_status wait_until(
unique_lock<mutex>& Lck,
const chrono::time_point<Clock,
Duration>& Abs_time
);
template<
class Clock,
class Duration,
class Predicate
>
bool wait_until(
unique_lock<mutex>& Lck,
const chrono::time_point<Clock,
Duration>& Abs_time,
Predicate Pred
);
cv_status wait_until(
unique_lock<mutex>& Lck,
const xtime *Abs_time
);
template<class Predicate>
bool wait_until(
unique_lock<mutex>& Lck,
const xtime *Abs_time,
Predicate Pred
);
參數
Lck
unique_lock<mutex> 物件。Abs_time
chrono::time_point 物件。Pred
傳回 true 或 false的運算式。
傳回值
傳回 cv_status 型別傳回 cv_status::timeout 的方法,如果等候結束時, Abs_time 為止。 否則,方法會傳回 cv_status::no_timeout。
傳回 boolPred傳回值的方法。
備註
在 condition_variable 物件的第一個方法區塊是由呼叫的方式來表示。 notify_one 或 notify_all 或直到 Abs_time。 它可以偽造維持喚醒。
第二個方法有效地執行下列程式碼。
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
第三個和第四個方法使用指標型別 xtime 物件取代 chrono::time_point 物件。 xtime 物件指定最大時間等候信號。
需求
condition_variable 的標題:
命名空間: std