RIDE 中文站

发布日期:2025-01-04 17:45    点击次数:60

这里主要用到的几个 win32api 为 MMRESULT timeBeginPeriod使用该 api 需要链接 Winmm, 所以我们在文件顶部加入#pragma comment( lib, "Winmm" ).它的作用是请求提高一些计时器的精度比如这里的Sleep, 默认 windows 似乎只会给我们提供 10ms 左右很粗糙的精度, 所以这里我们直接请求尽可能的高的精度, 即 1ms.QueryPerformanceFrequency该 api 用于获取"性能计时器"的精度, 单位是 ticks每秒. 在我的机子上它的值是 10000000, 可以看到精度还是很令人满意的. 在这里我们将其与expected(也就是期望每次调用的间隔,单位s)进行相乘, 得到一个以ticks为单位的间隔.QueryPerformanceCounter该 api 会检测"性能计时器"的值, 单位为 ticks, 在 msdn 中其精度的描述为 <1us. 那么结合上述几个 api 以及几个简单的数学运算, 这样就可以相对稳定的定时调用函数了(在这里是 1s 60 次): 当你注释掉timeBeginPeriod的调用后你会发现结果不是很乐观(即使我们期望 1s 调用 60 次): 最后, 这个可能常见于游戏的帧率控制, 实际上我就是从这里知道的这些东西(x 到此这篇关于使用 c++ 在 windows 上稳定定时执行一个函数的文章就介绍到这了,更多相关c++定时执行函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!




Powered by RIDE 中文站 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2013-2024