条件变量和共享互斥锁

时间:2016-01-21 17:51:35

标签: c++ multithreading c++14

我想知道为什么我不能在C ++ 14(或17)

中做到这一点
preg_match("/^\S*[A-Z]\S*[A-Z]\S*$/", $text)

条件变量似乎只适用于std :: mutex。但为什么?

1 个答案:

答案 0 :(得分:11)

这是由标准定义的,以实现最高的实施效率。如果您想使用condition_variable的其他锁,则需要使用condition_variable_any。请注意,condition_variable_any实现虽然有一些开销。

引用标准:30.5条件变量

  

condition_variable提供只能的条件变量   等待unique_lock<mutex>类型的对象,允许最大值   在某些平台上的效率。