社区
进程/线程/DLL
帖子详情
双线程问题
atuwang
2010-04-16 05:39:34
在MFC中,定义两个Timer,m_nTimer1,m_nTimer2,
m_nTimer1=SetTimer(1,100,NULL);
m_nTimer2=SetTimer(2,50 ,NULL);
m_nTimer1用来捕捉640*480的图片,m_nTimer2用来放音乐,由于m_nTimer1所需时间比较长,导致m_nTimer2被延迟,造成音乐断断续续的,若用多线程,请问如何解决。或者有其他解决办法的也可,谢谢!
...全文
402
19
打赏
收藏
双线程问题
在MFC中,定义两个Timer,m_nTimer1,m_nTimer2, m_nTimer1=SetTimer(1,100,NULL); m_nTimer2=SetTimer(2,50 ,NULL); m_nTimer1用来捕捉640*480的图片,m_nTimer2用来放音乐,由于m_nTimer1所需时间比较长,导致m_nTimer2被延迟,造成音乐断断续续的,若用多线程,请问如何解决。或者有其他解决办法的也可,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luckzengwei
2010-04-30
打赏
举报
回复
[Quote=引用 16 楼 yaozhiyong110 的回复:]
引用 15 楼 luckzengwei 的回复:
不建议使用LS的采用定时器的方式来调用多线程,原因很简单,采用定时器如果调用的是开辟线程函数将会一直开辟线程将会给系统造成很大负担,影响软件系统的健壮性。如果调用子线程函数就显得没什么必要啦,既然采用了多线程还用定时器来做完全是多此一举。
LZ之所以出现上述的问题应该是你采用两个定时器函数都是在主线程里面的,而你希望的是两个功能能够基本上同步实……
[/Quote]
子线程里面调用了定时器,你在定时器函数里面操作的是啥子?难道不是开辟新线程,让新线程操作。如果是的话,那你在定时器里面进行线程操作完全就是画蛇添足,子线程可以实现你定时器的功能,而且效果绝对比定时器好。再定时器里面还来调用线程的一些处理肯定会造成负担的.ni nam_nTimer1=SetTimer(1,100,NULL);放在主线程里面间隔时间0.1秒,如果0.1秒后放一次CPU的时间片再操作
m_nTimer2=SetTimer(2,50 ,NULL);效果肯定不好撒。你直接开两个子线程,设个变量让其一直处于运行状态,不用定时器,做好线程同步就可以啦不更好,让子线程互相切换就得啦。
AIHANZI
2010-04-29
打赏
举报
回复
创建2个线程,,进行同步
SetTimer 只是产生个消息
dns007
2010-04-20
打赏
举报
回复
路过 mark 帮顶。。。
尹成
2010-04-20
打赏
举报
回复
创建一个线程,用多线程并行处理
xyzjanker
2010-04-19
打赏
举报
回复
搞两个线程,处理好线程同步就可以啦!!!!!!!!!11
yaozhiyong110
2010-04-19
打赏
举报
回复
[Quote=引用 15 楼 luckzengwei 的回复:]
不建议使用LS的采用定时器的方式来调用多线程,原因很简单,采用定时器如果调用的是开辟线程函数将会一直开辟线程将会给系统造成很大负担,影响软件系统的健壮性。如果调用子线程函数就显得没什么必要啦,既然采用了多线程还用定时器来做完全是多此一举。
LZ之所以出现上述的问题应该是你采用两个定时器函数都是在主线程里面的,而你希望的是两个功能能够基本上同步实现,但是第一个定时器函数里面的操作耗时较多就会让你的……
[/Quote]
什么叫 采用定时器如果调用的是开辟线程函数将会一直开辟线程将会给系统造成很大负担?
开辟线程不能控制? 每次进OnTimer都开新线程? 从头到尾就是开辟了一个新线程处理m_nTimer1
的 主程序处理m_nTimer2 理解我的意思?
luckzengwei
2010-04-19
打赏
举报
回复
不建议使用LS的采用定时器的方式来调用多线程,原因很简单,采用定时器如果调用的是开辟线程函数将会一直开辟线程将会给系统造成很大负担,影响软件系统的健壮性。如果调用子线程函数就显得没什么必要啦,既然采用了多线程还用定时器来做完全是多此一举。
LZ之所以出现上述的问题应该是你采用两个定时器函数都是在主线程里面的,而你希望的是两个功能能够基本上同步实现,但是第一个定时器函数里面的操作耗时较多就会让你的第二个定时器函数一直处于等待状态。
所以我建议LZ开辟两个子线程,处理好线程通信、线程同步还有多线程的中断(如果你有诸如不同按钮之类实现类似功能这个当然还是得处理的)的问题,应该就可以解决LZ的问题啦
liwei3290
2010-04-19
打赏
举报
回复
创建2各线程比较好
linfeng000d
2010-04-19
打赏
举报
回复
SetTimer 产生的是个消息,每隔一段时间会暂停。。所以就会出现你那种现象了
应该用 CreateThread 创建线程
atuwang
2010-04-18
打赏
举报
回复
[Quote=引用 8 楼 wangli820 的回复:]
AfxBeginThread 创建两个线程
[/Quote]
两个线程如何循环呢?
摄像头采集和音乐播放都得循环进行的
yaozhiyong110
2010-04-18
打赏
举报
回复
既然 m_nTimer1 处理的时间比较长 那在OnTimer里就起个新线程来处理m_nTimer1 的事件
处理完了通知主程序就是了 这样就不会让m_nTimer2 断断续续了
wangli820
2010-04-17
打赏
举报
回复
AfxBeginThread 创建两个线程
atuwang
2010-04-16
打赏
举报
回复
[Quote=引用 2 楼 bragi523 的回复:]
你可以在ontimer里面加个线程处理
只开一个线程
每次通过事件告诉线程执行
[/Quote]
可以具体些嘛,谢谢!
atuwang
2010-04-16
打赏
举报
回复
[Quote=引用 5 楼 littlefangmfc 的回复:]
造成断断续续的是因为你的两个定时器实际上都在发消息,进入一个消息队列,属于一个UI线程,不太明白你要实现一个什么样的功能,你可以开两个线程,一个读图片,一个放音乐,如果二者之间有关联,就用变量来控制,做好变量的同步保护就好了。具体如何开线程,很简单,你在论坛上搜一下就知道了
[/Quote]
功能是在播放音乐的同时能够捕捉视频,这两个同时进行
littlefangMFC
2010-04-16
打赏
举报
回复
造成断断续续的是因为你的两个定时器实际上都在发消息,进入一个消息队列,属于一个UI线程,不太明白你要实现一个什么样的功能,你可以开两个线程,一个读图片,一个放音乐,如果二者之间有关联,就用变量来控制,做好变量的同步保护就好了。具体如何开线程,很简单,你在论坛上搜一下就知道了
acdbxzyw
2010-04-16
打赏
举报
回复
帮顶。。
Eleven
2010-04-16
打赏
举报
回复
[Quote=引用 2 楼 bragi523 的回复:]
你可以在ontimer里面加个线程处理
只开一个线程
每次通过事件告诉线程执行
[/Quote]
up。。。
bragi523
2010-04-16
打赏
举报
回复
你可以在ontimer里面加个线程处理
只开一个线程
每次通过事件告诉线程执行
Yofoo
2010-04-16
打赏
举报
回复
SetTimer 产生的是个消息, 是同一个线程
应该用 CreateThread 创建线程
双
线程
守护
无聊的时候写的一个
双
线程
守护的整蛊小程序
双
线程
接力
java的
双
线程
接力参考代码,学习参考用。。。
java小程序
双
线程
接力
java小程序,
双
线程
接力,可以帮你更好学习java语言
双
线程
下载
双
线程
下载
SDOF_
双
线性滞回_
双
线性_时程分析_
双
线性滞回_
双
线性模型_
双
线性滞回模型,单自由度结构的地震时程分析
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章