gpt4 book ai didi

c - Sleep() 或 sleep() 有多准确

转载 作者:太空狗 更新时间:2023-10-29 16:09:37 32 4
gpt4 key购买 nike

我正在尝试模拟按键按下和按键 Action 。

例如:2638 毫秒。

SendMessage(hWnd, WM_KEYDOWN, keyCode, 0);
Sleep(2638);
SendMessage(hWnd, WM_KEYUP, keyCode, 0);

你怎么知道它是否真的有效?

最佳答案

您不会使用此代码,因为准确测量代码执行所需的时间是一项艰巨的任务。

要解决您的问题标题提出的问题(您真的应该一次问一个问题...),上述功能的准确性由操作系统决定。在 Linux 上,系统时钟粒度为 10 毫秒,因此通过 nanosleep() 定时暂停进程只能保证精确到 10 毫秒,即使这样也不能保证在您指定的时间准确休眠。 (见下文。)

在 Windows 上,可以更改时钟粒度以适应电源管理需求(例如,降低粒度以节省电池电量)。参见 MSDN's documentation on the Sleep function .

请注意,使用 Sleep()/nanosleep(),操作系统仅保证进程暂停将持续至少,只要您指定。其他流程的执行总是会延迟流程的恢复。

因此,您上面的代码发送的按键弹起事件将至少比按键按下事件晚 2.638 秒发送,而不是早一毫秒。但是事件有可能在 2.7、2.8 甚至 3 秒后发送。 (或者很久以后,如果一个实时进程捕获了 CPU 并且在一段时间内没有放弃控制。)

关于c - Sleep() 或 sleep() 有多准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128766/

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