recursive_timed_mutex-Klasse
Stellt einen timed mutex type dar. Objekte dieses Typs werden verwendet, um den gegenseitigen Ausschluss durch zeitlich begrenzte Blockierung innerhalb eines Programms zu erzwingen. Im Gegensatz zu Objekten des Typs timed_mutex, sind die Auswirkungen von aufrufenden Sperrmethoden für recursive_timed_mutex
-Objekte klar definiert.
Syntax
class recursive_timed_mutex;
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
recursive_timed_mutex | Erstellt ein recursive_timed_mutex -Objekt, das nicht gesperrt ist. |
recursive_timed_mutex-Destruktor | Gibt alle Ressourcen frei, die vom recursive_timed_mutex -Objekt verwendet werden. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
lock | Blockiert den aufrufenden Thread, bis der Thread in den Besitz von mutex gelangt. |
try_lock | Versucht, ohne Blockierung in den Besitz von mutex zu gelangen. |
try_lock_for | Versucht, den Besitz von mutex für ein angegebenes Zeitintervall zu erlangen. |
try_lock_until | Versucht, den Besitz von mutex bis zu einem angegebenen Zeitpunkt zu erlangen. |
unlock | Gibt den Besitz von mutex frei. |
Anforderungen
Header:<mutex>
Namespace: std
lock
Blockiert den aufrufenden Thread, bis der Thread in den Besitz von mutex
gelangt.
void lock();
Hinweise
Wenn der aufrufende Thread bereits im Besitz von mutex
ist, wird die Methode sofort zurückgegeben, und die vorherige Sperre bleibt in Kraft.
recursive_timed_mutex-Konstruktor
Erstellt ein recursive_timed_mutex
-Objekt, das nicht gesperrt ist.
recursive_timed_mutex();
recursive_timed_mutex-Destruktor
Gibt alle Ressourcen frei, die vom recursive_timed_mutex
-Objekt verwendet werden.
~recursive_timed_mutex();
Hinweise
Wenn das Objekt gesperrt ist, wenn der Destruktor ausgeführt wird, ist das Verhalten nicht definiert.
try_lock
Versucht, ohne Blockierung in den Besitz von mutex
zu gelangen.
bool try_lock() noexcept;
Rückgabewert
true
, wenn die Methode den Besitz von mutex
erfolgreich erhalten hat oder wenn der aufrufende Thread bereits im Besitz der mutex
ist; andernfalls false
.
Hinweise
Wenn der aufrufende Thread bereits im Besitz von mutex
ist, gibt die Funktion sofort true
zurück, und die vorherige Sperre bleibt in Kraft.
try_lock_for
Versucht, ohne Blockierung in den Besitz von mutex
zu gelangen.
template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);
Parameter
Rel_time
Ein chrono::duration-Objekt, das angibt, wie lange die Methode höchstens versucht, in den Besitz von mutex
zu gelangen.
Rückgabewert
true
, wenn die Methode erfolgreich Besitzrechte von mutex
erhält, oder wenn der aufrufende Thread bereits im Besitz der mutex
ist; andernfalls false
.
Hinweise
Wenn der aufrufende Thread bereits im Besitz von mutex
ist, gibt die Methode sofort true
zurück, und die vorherige Sperre bleibt in Kraft.
try_lock_until
Versucht, ohne Blockierung in den Besitz von mutex
zu gelangen.
template <class Clock, class Duration>
bool try_lock_for(const chrono::time_point<Clock, Duration>& Abs_time);
bool try_lock_until(const xtime* Abs_time);
Parameter
Abs_time
Ein Zeitpunkt, der den Schwellenwert angibt, nach dem die Methode nicht mehr versucht, in den Besitz von mutex
zu gelangen.
Rückgabewert
true
, wenn die Methode erfolgreich Besitzrechte von mutex
erhält, oder wenn der aufrufende Thread bereits im Besitz der mutex
ist; andernfalls false
.
Hinweise
Wenn der aufrufende Thread bereits im Besitz von mutex
ist, gibt die Methode sofort true
zurück, und die vorherige Sperre bleibt in Kraft.
Entsperren
Gibt den Besitz von mutex
frei.
void unlock();
Hinweise
Diese Methode gibt den Besitz der mutex
erst frei, wenn sie so oft aufgerufen wurde, wie lock, try_locktry_lock_for, und try_lock_until erfolgreich im recursive_timed_mutex
-Objekt aufgerufen wurden.
Wenn der aufrufende Thread nicht im Besitz von mutex
ist, so ist das Verhalten nicht definiert.