c - Windows 计时器是否与 Sleep() 一样准确?

标签 c winapi

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

Sleep(36000000); // sleep for 10 hours

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

但是,由于 Sleep() 会阻塞我的 UI 线程,所以我改用 Windows 定时器。那么 Windows 计时器是否与 Sleep() 一样准确?也就是说,它会等待整整 10 个小时(加上我的窗口过程接收 WM_TIMER 消息所需的时间)吗?

最佳答案

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

关于c - Windows 计时器是否与 Sleep() 一样准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33452442/

相关文章:

c - 如何将多个结构字段复制到另一字段?

c - 在 C 中检测 64 位编译

c - snprintf 和 Visual Studio 2010

c++ - 将 LPWSTR 转换为字符串

c++ - WideCharToMultiByte() 与 wcstombs()

c - 如何在资源管理器中同时打开多个文件?

c - SHA_256 函数破坏内存空间

c - C(不是 C++)的异常库

c++ - WinMain 重新定义

C++ API DLL 项目