我有一些需要计算时间间隔的 C++ Windows 代码。为此,如果它检测到在 WinCE 和GetSystemTimeAsFileTime中运行其他 Windows 平台,它会使用GetCurrentFT 。但是,如果我没记错的话,这可能容易受到系统时钟操作的影响(即有人更改系统时钟会使测量的时间间隔不可靠)。
对于这些平台(WinCE 和其他 Windows 平台)是否有类似于 UNIX 的 CLOCK_MONOTONIC 的东西,它会使用单调递增的计数器而不是系统时钟?
我有一些需要计算时间间隔的 C++ Windows 代码。为此,如果它检测到在 WinCE 和GetSystemTimeAsFileTime中运行其他 Windows 平台,它会使用GetCurrentFT 。但是,如果我没记错的话,这可能容易受到系统时钟操作的影响(即有人更改系统时钟会使测量的时间间隔不可靠)。
对于这些平台(WinCE 和其他 Windows 平台)是否有类似于 UNIX 的 CLOCK_MONOTONIC 的东西,它会使用单调递增的计数器而不是系统时钟?
std::chrono::steady_clock
是单调的,不易受系统时间变化的影响。我不知道微软是否支持 WinCE 的 C++11。
我确实最终使用了GetTickCount()
,效果很好。
根据微软的文档:
自系统启动以来经过的毫秒数表示成功。
这是一个单调的计数器,这正是我要找的。返回值的粒度取决于硬件,但在我使用的硬件中似乎足以满足我的目的。