metodo condition_variable::wait_until
Blocca un thread e imposta un valore massimo in cui il thread sblocca.
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
);
Parametri
Lck
Un oggetto unique_lock<mutex>.Abs_time
Un oggetto chrono::time_point.Pred
Qualsiasi espressione che restituisca true o false.
Valore restituito
Metodi che restituiscono un valore cv_status::timeout del tipo cv_status se l'attesa termina quando Abs_time trascorre.In caso contrario, i metodi cv_status::no_timeoutrestituita.
Metodi che restituiscono un valore bool il valore Pred.
Note
I primi blocchi di metodo all'oggetto condition_variable viene segnalato da una chiamata a notify_one o a notify_all o fino a Abs_time.Può inoltre svegliare spurio.
Il secondo metodo esegue effettivamente il codice seguente.
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
Il terzo e il quarto metodi utilizzano un puntatore a un oggetto di tipo xtime per sostituire l'oggetto chrono::time_point.L'oggetto xtime specifica il tempo massimo di attesa un segnale.
Requisiti
intestazione: condition_variable
Spazio dei nomi: deviazione standard