std::unique_lock<Mutex>:: try_lock_for
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
unique_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++11) | |
Versucht, den zugehörigen Mutex zu sperren (d.h. die Eigentümerschaft zu übernehmen). 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 . Ruft effektiv mutex ( ) - > try_lock_for ( timeout_duration ) auf.
Diese Funktion kann länger blockieren als timeout_duration aufgrund von Planungs- oder Ressourcenkonfliktverzögerungen.
Der Standard empfiehlt, dass eine stetige Uhr zur Messung der Dauer verwendet wird. Falls eine Implementierung stattdessen eine Systemuhr verwendet, kann die Wartezeit auch anfällig für Uhranpassungen sein.
std::system_error wird ausgelöst, wenn kein assoziierter Mutex vorhanden ist oder wenn der Mutex bereits von diesem std::unique_lock gesperrt wurde.
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_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
|
sperrt (d.h. übernimmt den Besitz) des zugehörigen Mutex
(öffentliche Elementfunktion) |
|
|
versucht, den zugehörigen Mutex ohne Blockierung zu sperren (d.h. den Besitz zu übernehmen)
(öffentliche Elementfunktion) |
|
|
versucht, den zugehörigen Mutex für die angegebene Dauer zu sperren
(öffentliche Elementfunktion von
std::shared_lock<Mutex>
)
|
|
|
versucht, den zugehörigen
TimedLockable
Mutex zu sperren (d.h. den Besitz zu übernehmen), gibt zurück, wenn der Mutex bis zum Erreichen des angegebenen Zeitpunkts nicht verfügbar war
(öffentliche Elementfunktion) |
|
|
entsperrt (d.h. gibt den Besitz frei) des zugehörigen Mutex
(öffentliche Elementfunktion) |