std::chrono::system_clock::now().time_since_epoch()
从何而来?
也就是说,它是与晶体振荡器(物理组件)的直接接口(interface)吗?
如果是晶振,是每核一个还是所有核一个?
如果所有内核都有一个振荡器,如果多个线程同时访问它(低延迟环境),它是否会阻塞线程?
如果每个核心都有一个晶体振荡器,它们如何同步?
最佳答案
C++ 标准不关心如何system_clock::now()
得到实现。它只是指定
Returns a
time_point
object representing the current point in time.
典型的 C++ 标准库实现依赖于底层操作系统系统调用来获取实际的系统时钟值来构造 time_point
对象。
在硬件实现方面,您需要考虑硬件架构。但通常系统时钟的维护成本始终存在,无论有多少进程/线程正在读取它。并且系统时钟获取实现为一个轻量级例程,不会导致线程阻塞,不会成为多线程程序中的性能瓶颈。
此外,std::chrono::system_clock::now().time_since_epoch()
是一个简单的观察者方法,它只返回嵌入的 duration
time_point
中的对象std::chrono::system_clock::now()
返回的对象,这仅涉及 C++ 结构复制。
关于c++ - 从 `std::chrono::system_clock::now().time_since_epoch()` 开始的时间从哪里来,如果从多个线程访问它会阻塞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46740302/