将 std::condition_variable 与 std::timed_mutex 一起使用

MK.*_*MK. 5 c++ concurrency stl

是否可以?我想使用 timed_mutex 而不是带有条件变量的常规互斥体,但它不会编译并查看源代码

  void
  wait(unique_lock<mutex>& __lock, _Predicate __p)
  {
while (!__p())
  wait(__lock);
  }
Run Code Online (Sandbox Code Playgroud)

(缩进由 libc++ 作者提供,真的吗?)

所以看起来它实际上仅限于直接互斥体,而不是定时互斥体。但为什么??

Fra*_*eux 7

是的,std::conditional_variable仅限于std::unique_lock<std::mutex>std::condition_variable_any但是,您可以将更通用的功能与具有兼容接口的任何东西一起使用。