当我使用WaitForSingleObject函数等待非信号事件时,有时会发现在指定的超时时间内返回了WAIT_TIMEOUT。仅将超时设置为1000ms并循环调用该函数,我曾经看到调用在不到指定时间的情况下返回了(在WinXP运行)。我正在使用QueryPerformanceCounter获取系统时钟无关的时间测量,因此我认为时钟漂移可能不太可能是答案。
这种行为对我没有实际问题,但我希望更好地理解它。它似乎以大约计时器滴答的分辨率运行。Microsoft是否发布了关于此函数精度的进一步详细信息?我应该期望在Vista中有更高的精度吗?
这种行为对我没有实际问题,但我希望更好地理解它。它似乎以大约计时器滴答的分辨率运行。Microsoft是否发布了关于此函数精度的进一步详细信息?我应该期望在Vista中有更高的精度吗?
sleep(0)
。这很可能会改变行为以满足您的期望。此外:通过使用由QueryPerformanceFrequency()
返回的频率将QueryPerformanceCounter()
的结果转换为时间值意味着该频率是精确的。给定的频率被视为常量。但底层硬件具有公差。频率始终具有偏移量,甚至可能存在热漂移。 - Arno