Namespaces
Variants

std::shared_timed_mutex:: try_lock_shared_until

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 Clock, class Duration >
bool try_lock_shared_until ( const std:: chrono :: time_point < Clock,Duration > & timeout_time ) ;
(seit C++14)

Versucht, den Mutex im Shared-Modus zu sperren. Blockiert bis der angegebene timeout_time erreicht ist oder die Sperre erworben wurde, je nachdem, was zuerst eintritt. Bei erfolgreichem Sperrenrwerb 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 fehlerhaft, wenn std:: chrono :: is_clock_v < Clock > false ist. (seit C++20)

Die Norm empfiehlt, dass die an timeout_time gebundene Uhr verwendet wird, wobei Anpassungen der Uhr berücksichtigt werden können. Daher könnte die Dauer der Blockierung 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 blockieren, bis timeout_time aufgrund von Prozessplanung oder Ressourcenkonflikten überschritten wurde.

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 vor timeout_time 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_until von einem Thread aufgerufen wird, der den mutex bereits in einem beliebigen Modus (shared oder exclusive) besitzt, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Parameter

timeout_time - maximaler Zeitpunkt, bis zu dem blockiert wird

Rückgabewert

true wenn der gemeinsame Sperrbesitz erfolgreich erlangt wurde, andernfalls false .

Exceptions

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 zu sperren, gibt zurück, falls der Mutex
bis zum angegebenen Zeitpunkt nicht verfügbar war
(öffentliche Member-Funktion)
versucht, den Mutex für gemeinsamen Besitz zu sperren, gibt zurück, falls der Mutex nicht verfügbar ist
(öffentliche Member-Funktion)
versucht, den Mutex für gemeinsamen Besitz zu sperren, gibt zurück, falls der Mutex
für die angegebene Timeout-Dauer nicht verfügbar war
(öffentliche Member-Funktion)