我有一个条件变量
std::condition_variable my_cond;
我希望能够用标准等效项替换
boost::timed_wait()
。
如果前面提到的条件变量是 boost 变量,那么我将使用
timed_wait()
的 boost 版本,如下所示:
cond_.timed_wait(lock,timeout);
其中
lock
是 std::scoped_lock lock(mutex_);
超时是用 boost::chrono
执行的时间。
boost:chrono
、boost locks
和 boost mutexes
已替换为其标准类似物。我还没有找到timed_wait()
的替代品。
我尝试找到一个属于 std 的函数,它接收锁作为第一个参数,并接收
std::chrono
类型时间作为第二个参数。
在这里查看 condition_variable::wait
的文档:
https://en.cppreference.com/w/cpp/thread/condition_variable/wait
我没有看到第二个参数是时间类型的重载等待函数。
从
boost::timed_wait()
到 std::wait()
的转换可能吗?
对于
boost
condition_variable::timed_wait
而言,在等待时间 duration 和等待时间 point 时会过载。并且不清楚您正在使用哪种重载。
在
std
中,这些函数的名称略有不同,而不是在相同的名称上重载:
wait_for
。wait_until
。请参阅您链接到的页面的“另请参阅”部分:https://en.cppreference.com/w/cpp/thread/condition_variable/wait
对于
wait_for
,您可以使用任何 std::chrono::duration
实例化(duration
是类模板)。常见的例子是 std::chrono::milliseconds
和 std::chrono::seconds
。
对于
wait_until
,您可以使用任何 std::chrono::time_point
实例化。常见的例子是 std::chrono::steady_clock::time_point
和 std::chrono::system_clock::time_point
。