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 !!!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage