gpt4 book ai didi

c - Sleep() 不准确吗?

转载 作者:可可西里 更新时间:2023-11-01 14:45:04 25 4
gpt4 key购买 nike

我正在开发一个计时系统,我将实现一个计时器类。

#include <windows.h>
#include <stdio.h>
#include <time.h>

int main()
{
clock_t t1, t2;
t1 = clock();
Sleep(10);
t2 = clock();
printf("%i\n", (int)(t2 - t1));
return 0;
}

这个程序应该打印“10”,但它打印了“15”或“16”。我需要小于 1 毫秒的更准确!建议? (也许有 select() 的超时?)

注意:我在 Windows 7 Ultimate x86 上运行过这个程序。使用 MinGW (C/C++) x86 编译的程序。

NOW I THINK >>

最佳答案

Sleep() 精确到操作系统的时钟中断率。在 Windows 上默认情况下每秒滴答 64 次。或者如您所见,每 15.625 毫秒一次。

您可以增加该速率,调用 timeBeginPeriod(10)。完成后使用 timeEndPeriod(10)。您仍然受到正常线程调度延迟的影响,因此您仍然无法保证您的线程会在 10 毫秒后恢复运行。当机器负载很重时不会。使用 SetThreadPriority() 提高优先级,增加它会的几率。

关于c - Sleep() 不准确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19427034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com