c – 条件变量和共享互斥锁

前端之家收集整理的这篇文章主要介绍了c – 条件变量和共享互斥锁前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道为什么我不能在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 type unique_lock<mutex>,allowing maximum effciency on some platforms.

猜你在找的C&C++相关文章