在`boost ::条件:: TIMED_WAIT中消除`boost :: Xtime`
Eliminate `boost::xtime` in `boost::condition::timed_wait`
我们目前有很多以下形式的代码:
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_UTC
或boost::TIME_UTC_
,具体取决于Boost版本。
用:
替换它们是安全的m_Event.timed_wait (lock, boost::posix_time::seconds(3))
和
m_Event.timed_wait (lock, boost::posix_time::milliseconds(50))
分别?
另外,有人碰巧知道这需要什么最低版本?我的研究表明Boost 1.35,但我可能会误会。
是的,Boost 1.35添加了对boost.thread中相对超时的支持。是的,指定相对时间的规范方法是使用boost::posix_time::time_duration
(这是posix_time::seconds
和posix_time::milliseconds
的基类)。
如果您需要有关所需的升级版本的文档,则更改为1.35(又称为1.34以来更改),请提及对相对超时的支持。如果为您的目的来说太模糊了,请将condition
的1.34文档与condition_variable_any
的1.35文档进行比较。(有一个typedef
,可让您在1.35中保留类型名称" condition
"。)版本1.34仅文档timed_wait()
的绝对时间版本,而版本1.35具有用于使用相对时间的版本的模板。既不是xtime
也不是system_time
的时间参数是相对时间。
请注意,timed_wait()
在Boost 1.50中被弃用 - 替换为wait_for()
和wait_until()
,分别用于相对和绝对超时。
#define
明确要求,否则timed_wait()
的声明会被抑制。因此,您提出的内容对于版本1.35至1.52。相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何在boost beast http请求中设置http头
- Boost Spirit,获取迭代器内部语义动作
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 在`boost ::条件:: TIMED_WAIT中消除`boost :: Xtime`
- 如何修复与Xtime的Boost和Vs相互冲突的定义有关的编译器错误
- boost::xtime nsec 在 Ubuntu 上只给出了 1 秒的分辨率