std::shared_timed_mutex:: try_lock_shared_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Exclusive locking | ||||
| Shared locking | ||||
|
shared_timed_mutex::try_lock_shared_until
|
||||
|
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
|
Dieser Abschnitt ist unvollständig
Grund: Kein 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) |