使用inventory
或boost::chrono::steady_clock
可以保证物理时间始终是单调的,并且不受系统中日期时间更改的影响。这是我的问题,如果我有两个进程需要不受系统日期时间变化的影响,那么仅仅交换std::chrono::steady_clock
就足够了吗?换句话说,自纪元以来两个过程的时间解释将是相同的?具体来说,我需要为Windows和QNX回答这个问题。
编辑:两个进程都在同一台计算机,同一操作系统中运行,并通过IPC调用进行通信。
答案 0 :(得分:3)
没有时间在系统之间不可互换,因为C ++没有指定纪元。时代取决于操作系统,不同的系统可以有不同的时代。
另一方面,如果您在同一系统内仅在本地共享时间,那么它就可以了。
答案 1 :(得分:1)
C ++标准说的是关于steady_clock
:
20.12.7.2班级steady_clock [time.clock.steady]
类steady_clock的对象表示time_point的值随着物理时间的推移而永不减少的时钟,并且time_point的值相对于实时以稳定的速率前进。也就是说,时钟可能无法调整。
将此与标准对system_clock
所述的内容进行比较:
20.12.7.1类system_clock [time.clock.system]
类system_clock的对象表示系统范围实时时钟的挂钟时间。
没有提到steady_clock
正在"系统范围内",这让我相信,根据C ++标准,你不能相信两个{{1}在具有相同纪元的同一台机器上的不同进程中。