¿Se puede usar unique_lock con un recursive_mutex?
Según elesta, unique_lock
puede usarse para bloqueo recursivo declarando unstd::unique_lock<std::recursive_mutex>
, y de hecho eso compila bien.
Sin embargo, al examinar el código (gcc 4.8.2 y 4.9.0) parece queunique_lock
no difiere de_Mutex.lock
, sino que implementa el método de bloqueo en sí:
void
lock()
{
if (!_M_device)
__throw_system_error(int(errc::operation_not_permitted));
else if (_M_owns)
__throw_system_error(int(errc::resource_deadlock_would_occur));
else
{
_M_device->lock();
_M_owns = true;
}
Claramente, esto evita el bloqueo recursivo de la exclusión mutua y, de hecho, intentar bloquear recursivamente arroja elresource_deadlock_would_occur
excepción.
¿Me estoy perdiendo algo aquí, es un error o la documentación de unique_lock está mal?
TIA !!!