std::recursive_mutex:: try_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
recursive_mutex::try_lock
|
||||
| Native handle | ||||
|
bool
try_lock
(
)
noexcept
;
|
(seit C++11) | |
Versucht, den Mutex zu sperren. Gibt sofort zurück. Bei erfolgreichem Sperren gibt true zurück, andernfalls wird false zurückgegeben.
Diese Funktion kann sporadisch fehlschlagen und false zurückgeben, selbst wenn das Mutex derzeit von keinem anderen Thread gesperrt ist.
Ein Thread kann
try_lock
auf einem rekursiven Mutex wiederholt aufrufen. Erfolgreiche Aufrufe von
try_lock
erhöhen den Besitzzähler: Der Mutex wird erst freigegeben, nachdem der Thread eine entsprechende Anzahl von Aufrufen von
unlock
durchgeführt hat.
Die maximale Anzahl der Eigentümerebenen ist nicht spezifiziert. Ein Aufruf von
try_lock
wird
false
zurückgeben, wenn diese Anzahl überschritten wird.
Ein vorheriger unlock() -Vorgang auf demselben Mutex synchronisiert-mit (wie definiert in std::memory_order ) diesem Vorgang, falls er true zurückgibt. Beachten Sie, dass ein vorheriger lock() -Vorgang nicht mit diesem Vorgang synchronisiert, falls er false zurückgibt.
Inhaltsverzeichnis |
Parameter
(keine)
Rückgabewert
true wenn die Sperre erfolgreich erworben wurde, andernfalls false .
Ausnahmen
Wirft nichts.
Beispiel
#include <iostream> #include <mutex> int main() { std::recursive_mutex test; if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.lock(); // non-recursive mutex would return false from try_lock now if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.unlock(); }
Ausgabe:
lock acquired lock acquired
Siehe auch
|
sperrt das Mutex, blockiert falls das Mutex nicht verfügbar ist
(öffentliche Elementfunktion) |
|
|
entsperrt das Mutex
(öffentliche Elementfunktion) |
|
|
C-Dokumentation
für
mtx_trylock
|
|