日期:2014-05-16  浏览次数:20600 次

多线程---串口问题
查看了许多资料,在Linux下都是什么while(1),串口就一直等到那里,有没有一种好的方式,比如数据来了,发一个消息通知我,在Windows下就是这样实现的,一个线程就可以实现读写,我想封装一个串口类。在Windwos下可以调用Waitformultiobject函数来等待多个消息,不知道Linux如何实现这种功能,望高手指点?????

------解决方案--------------------
信号。或者开个线程。在QT库里有QSocketNotifier,类似于中断机制
------解决方案--------------------
好像都是在线程中等待的,
就是windows下,也是用线程等待的啊!
一检测到数据,就对主线程发送一个消息。

------解决方案--------------------
肯定是要阻塞等待的.
等待多个信号指的是多个等待单信号的捆绑, 这有什么好说的么?
------解决方案--------------------
接受到信号,你不让它弹出提示框,难道系统还会自动弹出提示框吗?
------解决方案--------------------
liunx下消息回调函数,你得在线程执行时发送一个消息,同事得用一个回调函数接受消息,将你需要调用的线程写在这个回调函数就可以了
------解决方案--------------------
select/poll就可以了。
------解决方案--------------------
我不知道我的提议对楼主有没有帮助,我写过一个linux下的五子棋程序,其中接收对方下棋信息就是用一个线程处理的,这个线程当然是一直都是在检测是否对方有数据传过来,一旦接收到数据,就会将对方的棋子画在棋盘上。但是用一个线程可以处理,并且不会让线程独占资源,这个时候还是可以做其他事情。

while(1)
{
recv(); //socket 接收函数
.
.
.
sleep(1); //也可以调用usleep() 参数是毫秒级别
}