std::recursive_mutex::try_lock
bool try_lock(); |
(desde C++11) | |
Intenta bloquear el mutex. Regresa inmediatamente. Si se tiene éxito en adquirir el bloqueo, devuelve true, de lo contrario devuelve false.
Se permite que esta función falle falsamente (spuriously) y devuelva false incluso si el mutex no se encuentra actualmente bloqueado por ningún otro hilo.
Un hilo puede llamar a try_lock
en un mutex recursivo repetidamente. Llamadas con éxito a try_lock
incrementan la cuenta de la propiedad: el mutex se liberará solamente después que el hilo haga un número de llamadas coincidentes a unlock.
El número máximo de niveles de propiedad no está especificado. Una llamada a try_lock
devolverá false si se excede este número.
Una llamada previa a unlock() en el mismo mutex se sincroniza-con (como se define en std::memory_order) esta operación si devuelve true. Observa que una llamada previa a lock() no se sincroniza con esta operación si devuelve false.
Contenido |
[editar] Parámetros
(Ninguno)
[editar] Valor de retorno
true si se adquirió el bloqueo con éxito, de lo contrario false.
[editar] Excepciones
No lanza nada.
[editar] Ejemplo
#include <iostream> #include <mutex> int main() { std::recursive_mutex test; if (test.try_lock()) { std::cout << "bloqueo adquirido\n"; test.unlock(); } else { std::cout << "bloqueo no adquirido\n"; } test.lock(); // ahora, un mutex no recursivo devolvería false de try_lock if (test.try_lock()) { std::cout << "bloqueo adquirido\n"; test.unlock(); } else { std::cout << "bloqueo no adquirido\n"; } test.unlock(); }
Salida:
bloqueo adquirido bloqueo adquirido
[editar] Véase también
Bloquea el mutex; se bloquea si el mutex no está disponible (función miembro pública) | |
Desbloquea el mutex (función miembro pública) | |
Documentación de C para mtx_trylock
|