gpt4 book ai didi

c++ - 系统之间奇怪的 'Sleep' 行为

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

我有一个程序使用 Sleep Win32 API 调用让线程等待特定的时间。
简而言之,它通过发送预取在内存中的图像来模拟相机。我正在使用 Sleep 来模拟帧率 -- Sleep(1000/fps)

这在我的开发系统(Intel i5(第一代)、Win7 64)上运行良好,但当我在另一个系统(Intel i7-2600 - SandyBridge)上运行时, sleep 时间完全不同且不准确。

例如,Sleep(16) 休眠大约 32ms
Sleep(3) 休眠 16ms

过去,我认为 Windows 中的最短 sleep 时间为 15ms,但我的开发系统没有这个限制。

有什么想法吗?

另外,有没有更好的方法来实现我的模拟器的帧率?

最佳答案

sleep 函数保证您至少会睡到调用中指定的时间。它会导致线程挂起,允许在调度程序空闲时切换到其他线程(由线程优先级控制)。换句话说,休眠线程保证在指定时间过去后立即运行,因此应避免使用sleep 进行精确计时在一般情况下。

但是,有一些方法可以在 Windows 上实现更准确的 sleep 。您可以调用 timeGetDevCaps 来确定支持的最小计时器分辨率,然后在您的应用程序早期调用一次 timeBeginPeriod 以将计时器分辨率设置为其最小值。请务必在应用程序退出之前调用 timeEndPeriod

有关详细信息,请参阅 the Sleep function on MSDN .

关于c++ - 系统之间奇怪的 'Sleep' 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699210/

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