读书人

双线程有关问题

发布时间: 2012-03-28 15:40:03 作者: rapoo

双线程问题
在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被延迟,造成音乐断断续续的,若用多线程,请问如何解决。或者有其他解决办法的也可,谢谢!

[解决办法]
SetTimer 产生的是个消息, 是同一个线程
应该用 CreateThread 创建线程
[解决办法]
你可以在ontimer里面加个线程处理
只开一个线程
每次通过事件告诉线程执行
[解决办法]

探讨
你可以在ontimer里面加个线程处理
只开一个线程
每次通过事件告诉线程执行

[解决办法]
造成断断续续的是因为你的两个定时器实际上都在发消息,进入一个消息队列,属于一个UI线程,不太明白你要实现一个什么样的功能,你可以开两个线程,一个读图片,一个放音乐,如果二者之间有关联,就用变量来控制,做好变量的同步保护就好了。具体如何开线程,很简单,你在论坛上搜一下就知道了
[解决办法]
AfxBeginThread 创建两个线程
[解决办法]
既然 m_nTimer1 处理的时间比较长 那在OnTimer里就起个新线程来处理m_nTimer1 的事件
处理完了通知主程序就是了 这样就不会让m_nTimer2 断断续续了
[解决办法]
搞两个线程,处理好线程同步就可以啦!!!!!!!!!11
[解决办法]
线程互相不影响,创建两个线程实现这个效果才好
[解决办法]
SetTimer 产生的是个消息,每隔一段时间会暂停。。所以就会出现你那种现象了
应该用 CreateThread 创建线程
[解决办法]
创建2各线程比较好
[解决办法]
不建议使用LS的采用定时器的方式来调用多线程,原因很简单,采用定时器如果调用的是开辟线程函数将会一直开辟线程将会给系统造成很大负担,影响软件系统的健壮性。如果调用子线程函数就显得没什么必要啦,既然采用了多线程还用定时器来做完全是多此一举。
LZ之所以出现上述的问题应该是你采用两个定时器函数都是在主线程里面的,而你希望的是两个功能能够基本上同步实现,但是第一个定时器函数里面的操作耗时较多就会让你的第二个定时器函数一直处于等待状态。
所以我建议LZ开辟两个子线程,处理好线程通信、线程同步还有多线程的中断(如果你有诸如不同按钮之类实现类似功能这个当然还是得处理的)的问题,应该就可以解决LZ的问题啦
[解决办法]
探讨
不建议使用LS的采用定时器的方式来调用多线程,原因很简单,采用定时器如果调用的是开辟线程函数将会一直开辟线程将会给系统造成很大负担,影响软件系统的健壮性。如果调用子线程函数就显得没什么必要啦,既然采用了多线程还用定时器来做完全是多此一举。
LZ之所以出现上述的问题应该是你采用两个定时器函数都是在主线程里面的,而你希望的是两个功能能够基本上同步实现,但是第一个定时器函数里面的操作耗时较多就会让你的……

[解决办法]
[b]创建一个线程,用多线程并行处理[/b]
[解决办法]
路过 mark 帮顶。。。
[解决办法]
创建2个线程,,进行同步
SetTimer 只是产生个消息
[解决办法]
探讨
引用:
不建议使用LS的采用定时器的方式来调用多线程,原因很简单,采用定时器如果调用的是开辟线程函数将会一直开辟线程将会给系统造成很大负担,影响软件系统的健壮性。如果调用子线程函数就显得没什么必要啦,既然采用了多线程还用定时器来做完全是多此一举。
LZ之所以出现上述的问题应该是你采用两个定时器函数都是在主线程里面的,而你希望的是两个功能能够基本上同步实……

读书人网 >VC/MFC

热点推荐