Не это не так.
Рассмотрим точку зрения mutex
, где std::mutex::unlock
(из cppreference ):
Разблокирует мьютекс.
Мьютекс должен быть заблокирован текущим потоком выполнения, в противном случае поведение не определено.
Следовательно, было бы фатальным, если бы блокировка вызывала unlock
наmutex
, который больше не заблокирован.