当我使用Boost的boost :: xtime_get函数来获取当前时间时,nsec字段的分辨率只有一秒。我不期望纳秒分辨率,但为什么这么差?我所做的所有谷歌搜索似乎都暗示我应该在Linux上获得几毫秒的分辨率。我似乎无法找到替代方案--time.h函数也是1s分辨率......
Boost版本1.43 Ubuntu 10.04 GCC 4.4.3
如果有人能说清楚,我会非常感激!
答案 0 :(得分:3)
boost::xtime_get
并未成为Boost.Thread官方支持的部分。 Boost.Thread在1.35中从头开始重写,xtime_get
仅用于向后兼容1.35之前的代码。
即使在1.34.1中,也记录为:
这是一个临时解决方案,将在Boost中提供更强大的时间库。
xtime
类型用于表示某个时间刻度上的点或持续时间。这种类型可以由Markus Kuhn提出用于C标准。 Boost.Thread仅提供此提议的非常小的实现;预计Boost中将提供一个完整的实现(或其他时间库)作为一个单独的库,此时Boost.Thread将弃用其自己的实现。
“其他时间库”当然是Boost.Date_Time(顺便提一下是在Boost 1.32中引入的,所以看起来1.32和1.34.1之间的Boost.Thread文档没有更新)。在我看来,您正在寻找的Boost.Date_Time功能是boost::posix_time::microsec_clock::local_time()
或boost::posix_time::microsec_clock::universal_time()
,这些功能在文档的Posix Time部分中有说明。