gpt4 book ai didi

c++ - 消除 `boost::xtime`中的 `boost::condition::timed_wait`

转载 作者:行者123 更新时间:2023-11-28 04:24:33 24 4
gpt4 key购买 nike

我们目前有很多如下形式的代码:

boost::xtime t;
boost::xtime_get (&t, POV_TIME_UTC);
t.sec += 3 ;
m_Event.timed_wait (lock, t);

甚至:

boost::xtime t;
boost::xtime_get (&t, POV_TIME_UTC);
t.nsec += 50000000 ;
m_Event.timed_wait (lock, t);

(是的,没有检查 t.nsec 溢出。:shudder:)

其中 POV_TIME_UTC 定义为 boot::TIME_UTCboost::TIME_UTC_,具体取决于 boost 版本。

将这些替换为:

是否安全?
m_Event.timed_wait (lock, boost::posix_time::seconds(3))

m_Event.timed_wait (lock, boost::posix_time::milliseconds(50))

分别是?

另外,有人碰巧知道这需要什么最低版本的 boost 吗?我的研究表明 boost 1.35,但我可能弄错了。

最佳答案

是的,Boost 1.35 在 Boost.Thread 中添加了对相对超时的支持。是的,指定相对时间的规范方法是使用 boost::posix_time::time_duration(它是 posix_time::secondsposix_time 的基类: :毫秒).

如果您需要有关所需 Boost 版本的文档,changes in 1.35 (也就是自 1.34 以来的变化),提到了对相对超时的支持。如果这对您的目的来说太模糊,请比较 1.34 documentation for condition1.35 documentation for condition_variable_any . (有一个 typedef 允许您在 1.35 中保留类型名称“condition”。)版本 1.34 仅记录 timed_wait() 的绝对时间版本>,而 1.35 版有采用相对时间的版本模板。既不是 xtime 也不是 system_time 的时间参数被假定为相对时间。

请注意 timed_wait() 在 Boost 1.50 中已弃用——替换为 wait_for()wait_until(),相对和绝对超时分别。 从 Boost 1.53 开始,timed_wait() 的声明被抑制,除非通过 #define 明确请求。因此,您提出的建议对版本 1.35 到 1.52 有效。 编辑:显然,已弃用的功能并未在记录的时间表中删除。但是,它们仍然被弃用,因此一旦您可以将 1.50 设置为最低版本,转换为更新的功能将是明智的。

关于c++ - 消除 `boost::xtime`中的 `boost::condition::timed_wait`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54682298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com