C++ xtime nsec在Ubuntu上只能提供1秒的分辨率

C++ xtime nsec在Ubuntu上只能提供1秒的分辨率,c++,boost,C++,Boost,当我使用Boost的Boost::xtime_get函数获取当前时间时,nsec字段给出的分辨率只有一秒钟。我不期望纳秒级的分辨率,但为什么这么差呢?我所做的所有谷歌搜索似乎都暗示我应该在Linux上获得几毫秒的分辨率。我似乎也找不到替代品-时间。h函数的分辨率也是1s Boost版本1.43 Ubuntu 10.04 通用条款4.4.3 如果有人能告诉我,我将非常感激 自boost 1.34.1以来,boost::xtime_get一直不是boost.Thread的官方支持部分。Boost.T

当我使用Boost的Boost::xtime_get函数获取当前时间时,nsec字段给出的分辨率只有一秒钟。我不期望纳秒级的分辨率,但为什么这么差呢?我所做的所有谷歌搜索似乎都暗示我应该在Linux上获得几毫秒的分辨率。我似乎也找不到替代品-时间。h函数的分辨率也是1s

Boost版本1.43 Ubuntu 10.04 通用条款4.4.3


如果有人能告诉我,我将非常感激

自boost 1.34.1以来,boost::xtime_get一直不是boost.Thread的官方支持部分。Boost.Thread是在1.35中从头开始重写的,而
xtime\u get
只保留了与1.35之前版本代码的向后兼容性

即使在1.34.1中,也记录为:

这是一个临时解决方案,一旦在Boost中可用,它将被一个更健壮的时间库所取代

xtime
类型用于表示某个时间刻度上的某个点或某个时间段。Markus Kuhn可能会为C标准提出这种类型。Thread只提供了这个方案的一个非常小的实现;预计Boost中会提供一个完整的实现(或其他时间库)作为一个单独的库,此时Boost.Thread将不推荐它自己的实现


“其他时间库”当然是(顺便说一句,它是在Boost1.32中引入的,所以1.32和1.34.1之间的Boost.Thread文档似乎没有更新)。在我看来,您正在寻找的Boost.Date\u Time功能要么是
Boost::posix\u Time::microsec\u clock::local\u Time()
,要么是
Boost::posix\u Time::microsec\u clock::universal\u Time()
,这些都在文档的部分中有说明。

您为什么要首先使用它?为什么不
boost::posix_time::microsec_clock::local_time()
?什么意思是“nsec字段仅提供一秒钟的分辨率”?nsec总是0吗?如果不是,那就不是“一秒钟”的决议。nsec字段仅包含自纪元以来的纳秒数,模为1 000 000检查是否定义了
BOOST\u GETTIMEOFDAY
。否则,
xtime\u get
将调用
boost::posix\u time::second\u clock::universal\u time()
,尽管在Linux系统上看不到它的定义会很奇怪。首先,@ildjarn-谢谢,我没有意识到这一点,但它可以工作!虽然它不能用xtime解释我的问题,但这是我一直在寻找的替代方案,如果您添加了答案,我将很乐意为您提供答案;)@库比-谢谢你的建议,但它是明确的。