Namensräume
Varianten
Aktionen

std::shared_timed_mutex::try_lock_shared_for

Von cppreference.com
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
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

[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) [edit]
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) [bearbeiten]
versucht, den Mutex zu sperren, kehrt zurück, wenn der Mutex
für die angegebene Zeitdauer nicht verfügbar war
(public member function) [edit]