Freigeben über


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.

Siehe auch

Headerdateienreferenz
<mutex>