std::shared_timed_mutex::try_lock_shared_for
| template< class Rep, class Period > bool try_lock_shared_for( const std::chrono::duration<Rep,Period>& timeout_duration ); |
(seit C++14) | |
Versucht, die Mutex im Shared-Modus zu sperren. Blockiert, bis die angegebene timeout_duration abgelaufen ist oder die Shared-Sperre erworben wurde, je nachdem, was zuerst eintritt. Bei erfolgreichem Erwerb der Sperre wird true zurückgegeben, andernfalls wird false zurückgegeben.
Wenn timeout_duration kleiner oder gleich timeout_duration.zero() ist, verhält sich die Funktion wie try_lock_shared().
Diese Funktion kann aufgrund von Planungs- oder Ressourcenkonfliktverzögerungen länger als timeout_duration blockieren.
Der Standard empfiehlt die Verwendung einer stabilen Uhr zur Messung der Dauer. Wenn eine Implementierung stattdessen eine Systemuhr verwendet, kann die Wartezeit auch empfindlich auf Uhrenanpassungen reagieren.
Wie bei try_lock_shared() darf diese Funktion aus unerwarteten Gründen fehlschlagen und false zurückgeben, auch wenn die Mutex zu keinem Zeitpunkt während timeout_duration 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_for von einem Thread aufgerufen wird, der die mutex bereits in irgendeinem Modus (Shared oder Exklusiv) besitzt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Parameter
| timeout_duration | - | maximale Dauer für das Blockieren |
[bearbeiten] Rückgabewert
true, wenn die Sperre erfolgreich erworben wurde, andernfalls false.
[bearbeiten] 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).
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| 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 bis zum Erreichen des angegebenen Zeitpunktpunkts nicht verfügbar (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) |