Я довольно смущен необходимостью std::unique_lock
, когда вы ждете std::conditional_variable
. Поэтому я просматриваю код библиотеки в VS 2013 и больше запутался. Это как std::conditional_variable::wait()
реализовано:Какова задача std :: unique_lock при использовании с std :: conditional_variable :: wait()
void wait(unique_lock<mutex>& _Lck)
{ // wait for signal
_Cnd_waitX(&_Cnd, &_Lck.mutex()->_Mtx);
}
Это какая-то шутка? Оберните мьютексы в уникальном_блоке и ничего не делайте, но верните его назад? Почему бы просто не использовать мьютексы в списке параметров?
Возможно, вы захотите прочитать этот вопрос http://stackoverflow.com/q/2763714, он специфичен для pthread, но относится и к этому случаю. – Hasturkun