Metodo condition_variable_any::wait_until
Blocca la thread, ed imposta un tempo massimo al quale la thread si sbloccherà.
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);
Parametri
Lck
Un oggetto mutex.Abs_time
Un oggetto chrono::time_point.Pred
Qualsiasi espressione che restituisca true o false.
Valore restituito
I metodi che restituiscono un tipo cv_status::timeout, restituiscono cv_status se l'attesa termina quando è trascorso Abs_time. In caso contrario, il metodo restituisce cv_status::no_timeout.
I metodi che restituiscono un valore bool restituiscono il valore di Pred.
Note
Il primo metodo si blocca finché l'oggetto condition_variable non riceve un segnale da una chiamata a notify_one o a notify_all, o finché Abs_time. Si può inoltre attivare in modo illegittimo.
In effetti il secondo metodo esegue il codice seguente.
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
Il terzo e il quarto metodo 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 per un segnale.
Requisiti
Intestazione: condition_variable
Spazio dei nomi: std