std::shared_lock<Mutex>:: try_lock_for
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Shared locking | ||||
|
shared_lock::try_lock_for
|
||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
template
<
class
Rep,
class
Period
>
bool try_lock_for ( const std:: chrono :: duration < Rep,Period > & timeout_duration ) ; |
(seit C++14) | |
Versucht, den zugehörigen Mutex im Shared-Modus zu sperren. Blockiert, bis die angegebene
timeout_duration
abgelaufen ist oder die Sperre erworben wurde, je nachdem, was zuerst eintritt. Bei erfolgreichem Sperrenrwerb wird
true
zurückgegeben, andernfalls
false
. Effektiv wird
mutex
(
)
-
>
try_lock_shared_for
(
timeout_duration
)
aufgerufen.
Diese Funktion kann länger blockieren als timeout_duration aufgrund von Scheduling- oder Ressourcenkonflikt-Verzögerungen.
Der Standard empfiehlt, dass ein stabiler Taktgeber zur Messung der Dauer verwendet wird. Falls eine Implementierung stattdessen einen Systemtaktgeber verwendet, kann die Wartezeit auch anfällig für Taktjustierungen sein.
std::system_error wird ausgelöst, wenn kein assoziierter Mutex vorhanden ist oder wenn der Mutex bereits gesperrt ist.
Das Verhalten ist undefiniert, falls
Mutex
nicht die
SharedTimedLockable
Anforderungen erfüllt.
Inhaltsverzeichnis |
Parameter
| timeout_duration | - | maximale Dauer für die Blockierung |
Rückgabewert
true falls der Besitz des Mutex erfolgreich erlangt wurde, false andernfalls.
Ausnahmen
- Alle Ausnahmen, die von mutex ( ) - > try_lock_shared_for ( timeout_duration ) geworfen werden.
- Wenn kein zugehöriger Mutex vorhanden ist, std::system_error mit einem Fehlercode von std::errc::operation_not_permitted .
- Wenn der Mutex bereits gesperrt ist, std::system_error mit einem Fehlercode von std::errc::resource_deadlock_would_occur .
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
versucht, den zugehörigen
TimedLockable
Mutex zu sperren (d.h. übernimmt den Besitz), gibt zurück, wenn der Mutex für die angegebene Zeitdauer nicht verfügbar war
(öffentliche Mitgliedsfunktion von
std::unique_lock<Mutex>
)
|
|
|
sperrt den zugehörigen Mutex
(öffentliche Mitgliedsfunktion) |
|
|
versucht, den zugehörigen Mutex zu sperren
(öffentliche Mitgliedsfunktion) |
|
|
versucht, den zugehörigen Mutex bis zu einem bestimmten Zeitpunkt zu sperren
(öffentliche Mitgliedsfunktion) |
|
|
entsperrt den zugehörigen Mutex
(öffentliche Mitgliedsfunktion) |