Windows Timer是否与Sleep()一样准确?

时间:2015-10-31 13:59:39

标签: c winapi

Sleep()非常准确,例如,如果我想睡10个小时:

Sleep(36000000); // sleep for 10 hours

我的线程将等待10个小时(加上Windows需要唤醒我的线程的时间,这可以忽略不计)。

但是,由于Sleep()将阻止我的UI线程,我将改为使用Windows Timers。那么Windows计时器是否与Sleep()一样准确?那么,它会等待10个小时(加上我的Window Procedure接收WM_TIMER消息所需的时间)吗?

1 个答案:

答案 0 :(得分:0)

是的,Sleep()SetTimer()下方的基本管道是相同的。通过调用timeBeginPeriod()可以看到的东西,它会影响两者的准确性。它是时钟节拍中断处理程序,用于计算睡眠和计时器,并在准备好再次运行时获取线程。当系统时钟由时间服务器重新校准时,它们的睡眠/等待时间会被调整。