Namespaces
Variants

std::shared_timed_mutex:: try_lock_shared_for

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
template < class Rep, class Period >
bool try_lock_shared_for ( const std:: chrono :: duration < Rep,Period > & timeout_duration ) ;
(seit C++14)

Versucht, den 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 Sperrenrwerb wird true zurückgegeben, andernfalls false .

Wenn timeout_duration kleiner oder gleich timeout_duration. zero ( ) ist, verhält sich die Funktion wie try_lock_shared() .

Diese Funktion kann länger blockieren als timeout_duration aufgrund von Planungs- oder Ressourcenkonfliktverzögerungen.

Der Standard empfiehlt, dass eine stetige Uhr zur Messung der Dauer verwendet wird. Falls eine Implementierung stattdessen eine Systemuhr verwendet, kann die Wartezeit auch anfällig für Uhranpassungen sein.

Wie bei try_lock_shared() ist es dieser Funktion erlaubt, fälschlicherweise zu scheitern und false zurückzugeben, selbst wenn das Mutex zu keinem Zeitpunkt während der timeout_duration durch einen anderen Thread gesperrt war.

Ein vorheriger unlock() -Vorgang auf demselben Mutex synchronisiert-mit (wie definiert in std::memory_order ) diesem Vorgang, falls er true zurückgibt.

Wenn try_lock_shared_for von einem Thread aufgerufen wird, der den mutex bereits in einem beliebigen Modus (shared oder exclusive) besitzt, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Parameter

timeout_duration - maximale Dauer für die Blockierung

Rückgabewert

true wenn die Sperre erfolgreich erworben wurde, andernfalls false .

Ausnahmen

Jede Ausnahme, die von clock, time_point oder duration während der Ausführung geworfen wird (von der Standardbibliothek bereitgestellte Uhren, Zeitpunkte und Dauern werfen niemals).

Beispiel

Siehe auch

versucht, den Mutex für gemeinsamen Besitz zu sperren, gibt zurück, wenn der Mutex nicht verfügbar ist
(öffentliche Mitgliedsfunktion)
versucht, den Mutex für gemeinsamen Besitz zu sperren, gibt zurück, wenn der Mutex
bis zum Erreichen des angegebenen Zeitpunkts nicht verfügbar war
(öffentliche Mitgliedsfunktion)
versucht, den Mutex zu sperren, gibt zurück, wenn der Mutex für die
angegebene Timeout-Dauer nicht verfügbar war
(öffentliche Mitgliedsfunktion)