应该GetLocalTime()'向后跳过'?

时间:2015-08-10 02:30:08

标签: c++ windows

我知道QueryPerformanceCounter可以返回非单调/不连续的值(即,时间似乎会向后跳跃),因为从跨多核或多处理器架构的非同步时钟采样时间

我原以为GetLocalTime()避免了这些问题,尽管我找不到任何明确的说法。当我创建这个函数时:

int GetTimeAsMillisecondsSinceMidnight()
{
    SYSTEMTIME theTime;
    GetLocalTime( &theTime );
    return 3600000*theTime.wHour + 60000*theTime.wMinute
        + 1000*theTime.wSecond + theTime.wMilliseconds;
}

...我很惊讶以每秒20-30的速度生成事件,使用此函数的返回值为它们加上时间戳,并发现有时候时间戳会向后跳跃#34;在Core i7处理器上运行的合理最新的Windows 8 64位系统上运行多达4秒。

可能的原因是什么?#34;倒退"及时?如果GetLocalTime()是罪魁祸首,是否有任何替代方案具有相似的分辨率/准确度,但避免时间不连续的问题?

0 个答案:

没有答案