0

我了解Sleep()windows中的功能只能确保您的线程至少休眠指定的时间。虽然Sleep()不能保证线程只休眠超过指定时间,但是否可以通过使用 SetPriority() 提高进程/线程的优先级来提高线程休眠时间的准确性?

4

1 回答 1

1

MSDN 文章说如下:

如果 dwMilliseconds 大于 1 个滴答但小于 2 个滴答,则等待可能介于 1 到 2 个滴答之间,依此类推。要提高睡眠间隔的准确性,请调用 timeGetDevCaps 函数以确定支持的最小计时器分辨率,并调用 timeBeginPeriod 函数将计时器分辨率设置为最小值。调用 timeBeginPeriod 时要小心,因为频繁调用会显着影响系统时钟、系统电源使用和调度程序。如果调用 timeBeginPeriod,请在应用程序的早期调用一次,并确保在应用程序的最后调用 timeEndPeriod 函数。

因此,优先级不会影响我可以阅读的睡眠,但是另一个应用程序可能(导致)延迟(之间)线程切换,因此您的应用程序无论如何都会不太准确。

您可以尝试使用高分辨率计时器来尝试使自己的纳秒精度睡眠。

于 2013-06-10T20:21:35.423 回答