Namensräume
Varianten
Aktionen

std::shared_timed_mutex::try_lock_shared_until

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 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

[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) [edit]
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
für die angegebene Zeitdauer nicht verfügbar war
(public member function) [edit]