condition_variable_any::wait_until-Methode
Blockiert einen Thread und legt einen maximalen Zeitpunkt fest, an dem die Blockierung des Threads aufgehoben wird.
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);
Parameter
Lck
Ein Mutex-Objekt.Abs_time
Ein chrono::time_point-Objekt.Pred
Jeder gültige Ausdruck, der true oder false zurückgibt.
Rückgabewert
Methoden, die eine cv_status-Typ zurückgeben, geben cv_status::timeout zurück, wenn der Wartevorgang beendet wird, sobald Abs_time verstrichen ist. Andernfalls geben diese Methoden cv_status::no_timeout zurück.
Methoden, die bool zurückgeben, geben den Wert von Pred zurück.
Hinweise
Die erste Methode blockiert, bis das condition_variable-Objekt von einen Aufruf von notify_one oder notify_all signalisiert wurde, oder bis Abs_time. Sie kann auch falsch aktiviert werden.
Die zweite Methode führt tatsächlich den folgenden Code aus.
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
Bei der dritten und vierten Methode wird einen Zeiger auf ein Objekt des Typs xtime, verwendet, um das chrono::time_point-Objekt zu ersetzen. Mit dem xtime-Objekt wird die maximale Zeit angegeben, die auf ein Signal gewartet wird.
Anforderungen
Header: condition_variable
Namespace: std