Namespaces
Variants

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

Versucht, den Mutex zu sperren. Blockiert bis der angegebene timeout_time erreicht wurde (Timeout) oder die Sperre erworben wurde (owns the mutex), 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() .

Clock muss die Clock -Anforderungen erfüllen. Das Programm ist fehlerhaft, wenn std:: chrono :: is_clock_v < Clock > gleich 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 diese 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() ist es dieser Funktion erlaubt, fälschlicherweise zu scheitern und false zurückzugeben, selbst wenn das Mutex zu einem Zeitpunkt vor timeout_time von keinem 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_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 die Sperre erfolgreich erworben wurde, andernfalls false .

Exceptions

Jede Ausnahme, die von timeout_time geworfen wird (Uhren, Zeitpunkte und Dauern aus der Standardbibliothek werfen niemals Ausnahmen).

Beispiel

Siehe auch

sperrt das Mutex, blockiert falls das Mutex nicht verfügbar ist
(öffentliche Elementfunktion)
versucht das Mutex zu sperren, kehrt zurück falls das Mutex nicht verfügbar ist
(öffentliche Elementfunktion)
versucht das Mutex zu sperren, kehrt zurück falls das Mutex für die
spezifizierte Timeout-Dauer nicht verfügbar war
(öffentliche Elementfunktion)
entsperrt das Mutex
(öffentliche Elementfunktion)
C-Dokumentation für mtx_timedlock