该demo是基于QThread::run()多线程运行的QTcpSocket实例,本人以前经常基于主线程main来编写的QTcpServer/QTcpSocket。但基于项目需求,Socket所需处理的数据过大,单线程远远不能满足需要,会造成程序的灵敏性过慢。故撰写了这种基于多线程运行的Socket,其接收数据,写入数据,及Socket所有操作都是基于另外一个线程来处理,主线程只需配合界面的改变即可。
本人以前也做过多线程,但接触到这里就遇到一个问题,多线程来处理基于QIODevice子类对象,总会遇到很多问题。在csdn中也下载了各种版本的demo,其状况就是即使能运行,QT也会给你报各种错误,例如:Cannot send events to objects owned by a different thread
即使没有这种错误,也有有很多其他错误,本人的程序是运行在ARM平台下,即使当前能顺利运行,但不敢保证能一直能顺畅运行!本人花了两天的下班后时间,来做这个deom。
注意:该demo是QTcpSocket,但QTcpServer及QSerialPort逻辑都是一样的,这个demo的注释非常详细,可保证你看过一遍之后就能明白其中所有逻辑,相比其他博主的demo,个人觉得要质量要好很多。
如果有需要多线程运行的QSerialPort可私聊我,QTcpServer本人没做,但也一样的
1