Kai*_*ast 8 c++ multithreading c++14
我想知道为什么我不能在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);
Run Code Online (Sandbox Code Playgroud)
条件变量似乎只适用于std :: mutex.但为什么?
inf*_*inf 12
这由标准定义,以实现最高的实施效率.如果您想使用不同的锁,则condition_variable需要使用condition_variable_any.请注意,condition_variable_any实现有一些开销.
引用标准:30.5条件变量
Class
condition_variable提供了一个条件变量,它只能在类型的对象上等待unique_lock<mutex>,从而在某些平台上实现最大效率.