std::shared_timed_mutex::try_lock_shared_until
| template< class Clock, class Duration > bool try_lock_shared_until( const std::chrono::time_point<Clock,Duration>& timeout_time ); |
(seit C++14) | |
Versucht, die Mutex im Shared-Modus zu sperren. Blockiert, bis die angegebene timeout_time erreicht ist oder die Sperre erworben wurde, je nachdem, was zuerst eintritt. Bei erfolgreichem Erwerb der Sperre wird true zurückgegeben, andernfalls false.
Wenn timeout_time bereits verstrichen ist, verhält sich diese Funktion wie try_lock_shared().
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_shared() 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_shared_until von einem Thread aufgerufen wird, der die mutex bereits in irgendeinem Modus (shared oder exclusive) besitzt, ist das Verhalten undefiniert.
Inhalt |
[edit] Parameter
| timeout_time | - | maximaler Zeitpunkt, bis zu dem blockiert werden soll |
[edit] Rückgabewert
true, wenn der Shared-Lock-Besitz erfolgreich erworben wurde, andernfalls false.
[edit] Ausnahmen
Alle Ausnahmen, die von clock, time_point oder duration während der Ausführung ausgelöst werden (von der Standardbibliothek bereitgestellte Uhren, Zeitpunkte und Dauern lösen nie Ausnahmen aus).
[edit] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Siehe auch
| versucht, den Mutex zu sperren, kehrt zurück, wenn der Mutex bis zum Erreichen des angegebenen Zeitpunktpunkts nicht verfügbar (public member function) | |
| versucht, den Mutex für gemeinsamen Besitz zu sperren, kehrt zurück, wenn der Mutex nicht verfügbar ist (public member function) | |
| versucht, den Mutex für gemeinsamen Besitz zu sperren, kehrt zurück, wenn der Mutex für die angegebene Zeitdauer nicht verfügbar war (public member function) |