Kann unique_lock mit einem rekursiven_mutex verwendet werden?
Aufzeichnung desDie, unique_lock
kann für rekursives Sperren verwendet werden, indem ein @ deklariert wistd::unique_lock<std::recursive_mutex>
, und in der Tat kompiliert das gut.
Aus der Prüfung des Codes (gcc 4.8.2 und 4.9.0) geht jedoch hervor, dassunique_lock
verschiebt sich nicht auf_Mutex.lock
, sondern implementiert die Sperrmethode selbst:
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;
}
Dies verhindert eindeutig das rekursive Sperren des Mutex, und der Versuch, den Mutex rekursiv zu sperren, löst das @ auresource_deadlock_would_occur
Ausnahme.
Wenn ich hier etwas vermisse, ist das ein Fehler oder ist die Dokumentation für unique_lock einfach falsch?
TIA !!!