std::timed_mutex:: try_lock_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
timed_mutex::try_lock_until
|
||||
| Native handle | ||||
|
template
<
class
Clock,
class
Duration
>
bool try_lock_until ( const std:: chrono :: time_point < Clock, Duration > & timeout_time ) ; |
(seit C++11) | |
Versucht, den Mutex zu sperren. Blockiert bis der angegebene timeout_time erreicht wurde (Timeout) oder die Sperre erworben wurde (besitzt den Mutex), je nachdem, was zuerst eintritt. Bei erfolgreichem Sperrenrwerb wird true zurückgegeben, andernfalls false .
Wenn timeout_time bereits überschritten wurde, 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
>
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() 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 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 .
Ausnahmen
Jede Ausnahme, die von timeout_time geworfen wird (Uhren, Zeitpunkte und Dauern aus der Standardbibliothek werfen niemals Ausnahmen).
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2093 | C++11 |
try_lock_until
warf nichts
|
wirft timeout-bezogene Ausnahmen |
Siehe auch
|
sperrt den Mutex, blockiert falls der Mutex nicht verfügbar ist
(öffentliche Elementfunktion) |
|
|
versucht den Mutex zu sperren, kehrt zurück falls der Mutex nicht verfügbar ist
(öffentliche Elementfunktion) |
|
|
versucht den Mutex zu sperren, kehrt zurück falls der Mutex für die
spezifizierte Timeout-Dauer nicht verfügbar war (öffentliche Elementfunktion) |
|
|
entsperrt den Mutex
(öffentliche Elementfunktion) |
|
|
C-Dokumentation
für
mtx_timedlock
|
|