问一个关于定时器的问题!

碼上道 2005-09-07 10:33:53
现在要写一个跟外部程序进行数据交换的程序,外部的程序向要写的程序发很多的脉冲信息,当我写的程序接受脉冲信息后要根据不同的情况将接受到的脉冲信息延迟处理。 就是接受到一个脉冲后不是立即处理,而过10S,15S,不同的时间段进行处理。这些脉冲是不断的接受到的,而且有很多个,如果每接受到一个脉冲就设定一个定时器,那岂不是要设很多个,这是不是会影响程序的响应时间的!

有没有人有这方面的思路,我想了一下,如果用多线程也是行不通的,现在不知道C++程序中有没有比较好的处理方法!
...全文
191 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
alen_ghl 2005-09-08
  • 打赏
  • 举报
回复
同意楼上的,数组的大小根据实际定义,设置的大小能保证用到最后一个时,第一个已经处理完,这样就能循环使用了
whslovexyp 2005-09-08
  • 打赏
  • 举报
回复
关注下.
dirdirdir3 2005-09-08
  • 打赏
  • 举报
回复
建立一个数组存放多少秒后处理的时间对应其脉冲。设置一个1秒的定时器。
每到一次数组的变量都减一,为0的话就开始处理。
DentistryDoctor 2005-09-08
  • 打赏
  • 举报
回复
就用多线程,将接收到的脉冲信息缓冲起来。由一个专门的工作线程负责处理。
nlstone 2005-09-08
  • 打赏
  • 举报
回复
如果都是整秒的话,用一个1S的定时器,不同的脉冲用不同的变量计算即可
feelmoon 2005-09-08
  • 打赏
  • 举报
回复
多线程可以完全解决你的这个问题啊?或者你用线程池也行
MapleInHG 2005-09-08
  • 打赏
  • 举报
回复
如果处理很慢的话,还是多线程吧。
hyamw 2005-09-08
  • 打赏
  • 举报
回复
可以像dirdirdir3(风) 说的那样做,如果接受到的脉冲数不定,而且很多的话,可以用vector来做。
然后用1s定时器(如果实时性要求很高,可以考虑用多媒体定时器,减小定时间隔),每收到一个脉冲,往vector中添加一个数据,该数据由需要延长的时间除以定时器间隔时间。定时器处理过程中,每次把队列中的有效数据-1, 如果减到0,进行相应处理并且把该数据从vector中删除。
miky131499 2005-09-08
  • 打赏
  • 举报
回复
呵呵,补充下,比如是10S,那sleepTime=10000,然后sleep(sleepTime)
miky131499 2005-09-08
  • 打赏
  • 举报
回复
看这样行不,不同的处理过程用多线城,然后放个时间变量sleepTime,比如接到信息后,需要10S后处理,就用sleep(10000)
碼上道 2005-09-08
  • 打赏
  • 举报
回复
能介绍一下多媒体定时器吗?

nlstone 2005-09-08
  • 打赏
  • 举报
回复
要提高精度可以用多媒体定时器,可以达到1ms,其余方案如楼上诸位所说
nlstone 2005-09-08
  • 打赏
  • 举报
回复
实时性要求多高?

碼上道 2005-09-08
  • 打赏
  • 举报
回复
精确不止到S级,数据很多,而且要实时怎么办!?
yayafu 2005-09-07
  • 打赏
  • 举报
回复
系统中定时器个数是有限的,我看你基本都是在整秒处理,可以在收到脉冲后做个标记,在多少秒后处理它,用较短的间隔查询系统时间,在和脉冲中的时间相减,到了指定的时间差就处理他

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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