std::recursive_mutex:: try_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
recursive_mutex::try_lock
|
||||
| Native handle | ||||
|
bool
try_lock
(
)
noexcept
;
|
(desde C++11) | |
Intenta bloquear el mutex. Retorna inmediatamente. Si la adquisición del bloqueo es exitosa retorna true , de lo contrario retorna false .
Esta función puede fallar esporádicamente y devolver false incluso si el mutex no está actualmente bloqueado por ningún otro hilo.
Un hilo puede llamar
try_lock
en un mutex recursivo repetidamente. Las llamadas exitosas a
try_lock
incrementan el contador de propiedad: el mutex solo se liberará después de que el hilo realice un número equivalente de llamadas 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.
La operación previa unlock() en el mismo mutex sincroniza-con (como se define en std::memory_order ) esta operación si retorna true . Nótese que la operación previa lock() no se sincroniza con esta operación si retorna false .
Contenidos |
Parámetros
(ninguno)
Valor de retorno
true si el bloqueo se adquirió exitosamente, de lo contrario false .
Excepciones
No lanza nada.
Ejemplo
#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(); }
Salida:
lock acquired lock acquired
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
|
|