我想知道为什么我不能在C 14(或17)中做到这一点
std::shared_timed_mutex mutex; std::unique_lock<std::shared_timed_mutex> lock(mutex); std::condition_variable var; while(!some_condition) var.wait(lock);
条件变量似乎只适用于std :: mutex.但为什么?
解决方法
这由标准定义,以实现最高的实施效率.如果要使用带有condition_variable的其他锁,则需要使用
condition_variable_any
.请注意,condition_variable_any实现虽然有一些开销.
引用标准:30.5条件变量
Class
condition_variable
provides a condition variable that can only
wait on an object of typeunique_lock<mutex>
,allowing maximum effciency on some platforms.