关于多媒体定时器的问题?

dragon632 2009-11-06 08:56:50
因为需要一个10ms的精确定时器,试了SetTimer,发现就算设置了10ms周期,但是实际计算下来每次固定16ms。后来找到了timeSetEvnet,听说可以精确到1ms的定时,但是实际使用下来发现还是不够准确,我在定时器的Callback里用GetTickCount计算了下2次调用时间,一直在0,15,16ms之间飘动,平均下来应该是10ms左右了,不过这样子就太不够精确了。windows下到底怎么样才能实现10ms以内的精确定时?(保持2次调用见的时间间隔保持一致)
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragon632 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tr0j4n 的回复:]
参考
[/Quote]

谢谢你的参考,已经发现问题了,原来是我一直信赖的GetTickCount()不准,用timeGetTime()就没问题了.
arong1234 2009-11-06
  • 打赏
  • 举报
回复
个人建议:windows中定时器不要超过100ms的定时精度,如果要求更高,往往要考虑换平台或者考虑自己需求是不是合理
arong1234 2009-11-06
  • 打赏
  • 举报
回复
在多任务系统中实现精确定时是不可能的。一个繁忙线程很容易破坏你的定时。严格、高频定时需要在实时操作系统中做。
[Quote=引用楼主 dragon632 的回复:]
因为需要一个10ms的精确定时器,试了SetTimer,发现就算设置了10ms周期,但是实际计算下来每次固定16ms。后来找到了timeSetEvnet,听说可以精确到1ms的定时,但是实际使用下来发现还是不够准确,我在定时器的Callback里用GetTickCount计算了下2次调用时间,一直在0,15,16ms之间飘动,平均下来应该是10ms左右了,不过这样子就太不够精确了。windows下?-
[/Quote]
arong1234 2009-11-06
  • 打赏
  • 举报
回复
QueryPerformanceFrequency只是用来获得时间,你这种方法要求循环轮询时间,将极大的降低系统性能,任何多任务系统都应该尽量避免使用这种方法,很不幸,很多人都被这种所谓的“高精度定时器”给误导了。我们所需要的定时往往是希望系统啥都不干,到特定时刻起来调用我们的代码,这种“定时器”显然做不到这一点。

[Quote=引用 3 楼 zidene 的回复:]
利用QueryPerformanceFrequency函数获得计时器的时钟频率,然后利用QueryPerformanceCounter获得始终的起始值,利用起始的差值除以始终频率的得到的时间可以精确到0.01毫秒,可以利用这个时间编一个循环定时器。
[/Quote]
zidene 2009-11-06
  • 打赏
  • 举报
回复
利用QueryPerformanceFrequency函数获得计时器的时钟频率,然后利用QueryPerformanceCounter获得始终的起始值,利用起始的差值除以始终频率的得到的时间可以精确到0.01毫秒,可以利用这个时间编一个循环定时器。
onlyliu 2009-11-06
  • 打赏
  • 举报
回复
我是这么考虑的,建立一个线程,定义一个退出循环的BOOL变量mOut=TRUE; 用一个while(mOut)SYSTEMTIME 取得时间。进行计算比较。满足条件。运行你需要触发的操作。需要停止时mOut为FALSE,退出线程。相信CPU的运算时间肯定在ns以下。。。。
MoXiaoRab 2009-11-06
  • 打赏
  • 举报
回复

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧