condition_variable_any::wait_until – metoda
Blokuje vlákno a nastavuje maximální bod v čase, kdy se vlákno odblokuje.
template<class Lock, class Clock, class Duration>
void wait_until(
Lock& Lck,
const chrono::time_point<Clock, Duration>& Abs_time);
template<class Lock, class Clock, class Duration, class Predicate>
void wait_until(
Lock& Lck,
const chrono::time_point<Clock, Duration>& Abs_time,
Predicate Pred);
template<class Lock>
void wait_until(
Lock Lck,
const xtime *Abs_time);
template<class Lock, class Predicate>
void wait_until(
Lock Lck,
const xtime *Abs_time,
Predicate Pred);
Parametry
Lck
Objekt mutex.Abs_time
Objekt chrono::time_point.Pred
Libovolný výraz, který vrací true nebo false.
Vrácená hodnota
Metody, které vracejí typ cv_status, vracejí cv_status::timeout, pokud čekání skončí, když uplyne Abs_time.V opačném případě vrátí metody cv_status::no_timeout.
Metody, které vracejí bool, vracejí hodnotu Pred.
Poznámky
První metoda blokuje, dokud není objekt condition_variable signalizován voláním notify_one nebo notify_all nebo do Abs_time.Může se také probudit falešně.
Druhá metoda ve skutečnosti spustí následující kód.
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
Třetí a čtvrtá metoda použije ukazatel na objekt typu xtime, aby nahradil objekt chrono::time_point.Objekt xtime určuje maximální dobu čekání na signál.
Požadavky
Záhlaví: condition_variable
Obor názvů: std