boost::xtime nsec 在 Ubuntu 上只给出了 1 秒的分辨率

boost::xtime nsec only gives a 1 second resolution on Ubuntu

本文关键字:分辨率 nsec xtime Ubuntu boost      更新时间:2023-10-16

当我使用 Boost 的 boost::xtime_get 函数获取当前时间时,nsec 字段仅提供一秒钟的分辨率。 我没想到纳秒级的分辨率,但为什么这么差呢? 我所做的所有谷歌搜索似乎都暗示我应该在Linux上获得几毫秒的分辨率。 我似乎也找不到替代方案 - time.h 函数也在 1s 分辨率上......

增强版 1.43乌班图 10.04海湾合作委员会 4.4.3

如果有人能提供任何启示,我将不胜感激!

自Boost

1.34.1以来,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 时间部分有记录。