std::shared_timed_mutex::try_lock_until
| template< class Clock, class Duration > bool try_lock_until( const std::chrono::time_point<Clock, Duration>& timeout_time ); |
(seit C++14) | |
Versucht, die Mutex zu sperren. Blockiert, bis die angegebene timeout_time erreicht ist (Timeout) oder die Sperre erworben wird (Besitz der Mutex), je nachdem, was zuerst eintritt. Bei erfolgreichem Erwerb der Sperre wird true zurückgegeben, andernfalls wird false zurückgegeben.
Wenn timeout_time bereits verstrichen ist, verhält sich diese Funktion wie try_lock().
Clock muss die Clock-Anforderungen erfüllen.Das Programm ist schlecht geformt, wenn std::chrono::is_clock_v<Clock> false ist.(seit C++20)
Der Standard empfiehlt, die an timeout_time gebundene Uhr zu verwenden, in welchem Fall Anpassungen der Uhr berücksichtigt werden können. Somit kann die Dauer des Blocks mehr oder weniger als timeout_time - Clock::now() zum Zeitpunkt des Aufrufs betragen, abhängig von der Richtung der Anpassung und ob sie von der Implementierung berücksichtigt wird. Die Funktion kann auch über timeout_time hinaus blockieren, aufgrund von Prozessplanung oder Ressourcenkonfliktverzögerungen.
Wie bei try_lock() darf diese Funktion fehlerhaft fehlschlagen und false zurückgeben, auch wenn die Mutex zu keinem Zeitpunkt vor timeout_time von einem anderen Thread gesperrt wurde.
Eine vorherige unlock()-Operation auf demselben Mutex synchronisiert sich mit dieser Operation (wie in std::memory_order definiert), wenn diese true zurückgibt.
Wenn `try_lock_until` von einem Thread aufgerufen wird, der die Mutex bereits in irgendeinem Modus (shared oder exclusive) besitzt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Parameter
| timeout_time | - | maximaler Zeitpunkt, bis zu dem blockiert werden soll |
[bearbeiten] Rückgabewert
true, wenn die Sperre erfolgreich erworben wurde, andernfalls false.
[bearbeiten] Ausnahmen
Alle Ausnahmen, die von timeout_time ausgelöst werden (Uhren, Zeitpunkte und Zeitspannen, die von der Standardbibliothek bereitgestellt werden, werfen niemals Ausnahmen).
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| sperrt den Mutex, blockiert, wenn der Mutex nicht verfügbar ist (public member function) | |
| versucht, den Mutex zu sperren, kehrt zurück, wenn der Mutex nicht verfügbar ist (public member function) | |
| versucht, den Mutex zu sperren, kehrt zurück, wenn der Mutex für die angegebene Zeitdauer nicht verfügbar war (public member function) | |
| entsperrt den Mutex (public member function) | |
| C-Dokumentation für mtx_timedlock
| |