Уместно ли использовать и unique_lock, и scoped_lock с одним и тем же мьютексом? Чтобы разрешить использование cv.wait и необязательную разблокировку, одновременно обеспечивая безопасность с привязкой к области.
Например;
std::mutex mut;
//thread:
std::condition_variable cv;
std::unique_lock lock(mut);
cv.wait(lock);
std::scoped_lock scopeLock(std::adopt_lock, mut);
lock.release();
//tasks
scopeLock.~scoped_lock();
Задача ещё не решена.
Других решений пока нет …