Создав std::unique_lock lock(myMutex);
, вы предоставляете блокировку / разблокировку мьютекса для объекта блокировки. если вы вручную разблокируете мьютекс, пока он все еще находится под контролем объекта lock
, вы нарушите это ограничение, а деструктор lock
выполнит попытку двойной разблокировки.
Это похоже на все оболочки RAII - после того, как вы предоставили управление ресурсами объекту RAII, вы не должны мешать ему, вручную удаляя ресурс.
Обратите внимание, что std::unique_lock
предлагает метод разблокировки заблокированного мьютекса до окончания области действия, который не вызовет проблем:
lock.unlock();