std::recursive_mutex:: try_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
recursive_mutex::try_lock
|
||||
| Native handle | ||||
|
bool
try_lock
(
)
noexcept
;
|
(depuis C++11) | |
Tente de verrouiller le mutex. Retourne immédiatement. En cas de réussite du verrouillage, retourne true , sinon retourne false .
Cette fonction peut échouer sporadiquement et renvoyer false même si le mutex n'est actuellement verrouillé par aucun autre thread.
Un thread peut appeler
try_lock
de manière répétée sur un mutex récursif. Les appels réussis à
try_lock
incrémentent le compteur de propriété : le mutex ne sera libéré qu'après que le thread ait effectué un nombre correspondant d'appels à
unlock
.
Le nombre maximum de niveaux de propriété n'est pas spécifié. Un appel à
try_lock
retournera
false
si ce nombre est dépassé.
L'opération de unlock() antérieure sur le même mutex se synchronise avec (tel que défini dans std::memory_order ) cette opération si elle retourne true . Notez que l'opération de lock() antérieure ne se synchronise pas avec cette opération si elle retourne false .
Table des matières |
Paramètres
(aucun)
Valeur de retour
true si le verrou a été acquis avec succès, sinon false .
Exceptions
Ne lance rien.
Exemple
#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(); }
Sortie :
lock acquired lock acquired
Voir aussi
|
verrouille le mutex, bloque si le mutex n'est pas disponible
(fonction membre publique) |
|
|
déverrouille le mutex
(fonction membre publique) |
|
|
Documentation C
pour
mtx_trylock
|
|