MyException - 我的异常网
当前位置:我的异常网» VC/MFC » VC++处理一个多线程的一个经典有关问题

VC++处理一个多线程的一个经典有关问题

www.myexceptions.net  网友分享于:2013-04-10  浏览:2次
VC++处理一个多线程的一个经典问题
我现在有一个VC++写的win32服务程序。该进程有好几个线程,其中主线程是通过接受数据并且处理数据的。现在呢,我的程序需要在很短时间内去不停接收数据,每隔10ms去发送命令,并且在这10ms内接收到,不然就换下一个命令。1s是一个周期。在这个一个周期内,我还想要处理数据,所以我把处理数据写成了一个线程,达到一个线程接收数据,一个线程来处理这些数据。我想问问我该采用哪中线程同步的方式是最好的。
创建一个缓冲吗?
还是使用windows消息机制来排队让处理数据的线程处理?
使用互斥对象?还是创建事件呢?

另外,每10ms的接收的数据还不一样,所以处理线程还要能够对先前的数据处理的过来。

所以请高手帮忙指点下就行!!!
vc++ 多线程 windows 编程

------解决方案--------------------
不太理解你表述的是具体是什么意思。发送一个命令然后等待10ms看有没有数据发过来?没有就换下一个命令?
如果是这样的话,主线程可以开一个线程让它去接收数据并处理,有没有接收成功、有没有处理成功、还是处理完毕,都用windows消息机制发送消息通知主线程。然后自行退出。
------解决方案--------------------
可以创建一个线程安全的缓冲队列来实现数据的存储与读取
------解决方案--------------------
事件、互斥都可以呀
------解决方案--------------------
两个线程一读一写?可以不用互斥,采用循环缓冲的方式可以达到最高的效率。

http://www.ibm.com/developerworks/cn/linux/l-cn-lockfree/index.html
------解决方案--------------------
异步操作效率更高吧。
------解决方案--------------------
知道纤程吗 ?
他是线程内 自己调度的。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有