Windows中的c睡眠功能。是否存在精度更高的函数?

时间:2009-06-03 15:07:49

标签: c windows sleep precision delay

我想知道是否有人知道可以在c中的窗口中使用更好的睡眠功能,而不是Sleep(),它需要毫秒输入并且只保证输入是经过的最小时间量。我在1毫秒内通过,但实际上延迟了15-16毫秒。有没有办法准确设置指定的睡眠时间?

4 个答案:

答案 0 :(得分:2)

不,不是真的。当您告诉程序休眠时,您将放弃处理器并让操作系统决定下一步该做什么。一旦操作系统处于控制状态,它就会决定何时为程序提供另一段处理时间。这就是为什么你可以指定一个最小值,但不保证操作系统会在任何特定时间返回你的进程。

答案 1 :(得分:1)

答案 2 :(得分:1)

Sleep只保证您的进程不会至少 n 毫秒执行,而不是它将完全 n < / strong>毫秒。也许你想设置一个计时器?或者忙等待(即在循环中轮询QueryPerformanceCounter)。

我会尽量避免这种方法(繁忙的等待),除非你不得不这样做,你正在燃烧周期并且你要阻止CPU进入较低的时钟速度(即燃烧电池寿命)

答案 3 :(得分:0)

不,Windows上没有更好的睡眠功能,因为毫秒是可用的粒度级别。如果你想睡一段时间,你需要实现各种旋转锁定。