【发布时间】:2017-10-14 02:38:35
【问题描述】:
std::chrono::system_clock::now().time_since_epoch() 来自哪里?
也就是说,它是与晶体振荡器(物理组件)的直接接口吗?
如果是晶振,是每个核心一个还是所有核心一个?
如果所有内核都有一个振荡器,如果多个线程同时访问它,它是否可以阻塞线程(低延迟环境)?
如果每个内核都有一个晶体振荡器,它们是如何同步的?
【问题讨论】:
-
你有什么特别的实现吗?
-
@chris 你能详细说明你的意思吗?您是指 x86 vs arm 中的实现还是代码实现?
-
最值得注意的是操作系统,因为 chrono 库很可能只是委托给操作系统调用以获取自纪元以来的系统时间。例如,Windows 有
GetSystemTime。该标准很少会如此直接地提供细节,因为它限制了可以实施它的系统类型。 -
@chris 这将是在 Linux 的上下文中
-
SMP 系统的一个显着问题是内核必须为每个内核调整时期。所以有可能在一个线程中获取时间,同步,在另一个线程中获取它,并以稍早的时间结束。