你这是没搞懂多线程该怎么用。。。
网络数据读取和解析应该放到一个通讯线程中,用阻塞模式。在这个线程中收到并解析出一个完整的命令后,发送个信号(比如名叫 commandReady 或者 dataPackReady)给真正干活的线程。
简单的说就是不要让你干活的线程接收 readyRead 这么底层的信号,而是接收 commandReady 这样的高层的信号。
从任务划分的角度来说,接收通讯数据和解析通讯数据 这两个是应该在一个线程中的。使用数据应该在另外的工作线程。你现在肯定是把接收数据和使用数据放到同一个线程里了。所以你才会觉得不能用阻塞模式。
【 在 hengcuiyuan 的大作中提到: 】
: 肯定能干别的,要不然为什么搞多线程呀。比如我因为某个事务请求一次数据,那我不用傻等这个数据到来呀,我丢给数据处理线程等数据。然后我做其他事情,再请求一次或多次数据,请求完了都丢给数据处理线程。一旦某次请求的数据获得了,我就做相应的后续处理。这不就是要做多线程程序的原因嘛
:
--
修改:dormouseBHU FROM 120.244.156.*
FROM 120.244.156.*