condition_variable_any::wait_for-Methode
Blockiert einen Thread und legt ein Zeitintervall fest, nachdem die Blockierung des Threads aufgehoben wird.
template<
class Lock,
class Rep,
class Period
>
bool wait_for(
Lock& Lck,
const chrono::duration<Rep,
Period>& Rel_time
);
template<
class Lock,
class Rep,
class Period,
class Predicate
>
bool wait_for(
Lock& Lck,
const chrono::duration<Rep,
Period>& Rel_time,
Predicate Pred
);
Parameter
Lck
Ein mutex-Objekt jeglichen Typs.Rel_time
Ein chrono::duration-Objekt, das die Zeitdauer vor der Aktivierung des Threads angibt.Pred
Jeder gültige Ausdruck, der true oder false zurückgibt.
Rückgabewert
Die erste Methode gibt cv_status::timeout zurück, wenn der Wartevorgang beendet wird, sobald Rel_time verstrichen ist. Andernfalls gibt diese Methode cv_status::no_timeout zurück.
Die zweite Methode gibt den Wert von Pred zurück.
Hinweise
Die erste Methode blockiert bis dem condition_variable_any-Objekt von einen Aufruf von notify_one oder notify_all signalisiert wird, oder bis das Zeitintervall Rel_time abgelaufen ist. Sie kann auch falsch aktiviert werden.
Die zweite Methode führt tatsächlich den folgenden Code aus.
while(!Pred())
if(wait_for(Lck, Rel_time) == cv_status::timeout)
return Pred();
return true;
Anforderungen
Header: condition_variable
Namespace: std