首页| 论坛| 消息

回复: QT中如何实现两个线程分别接收和发送数据?
#6 回 zhaoxg 的帖子 [mugua001 09-04 00:52]
zhaoxg:个人感觉,看怎么方便,一个接收数据,一个处理,完成后发送,完全可以三个线程处理各不相干,处理起来思路比较清晰 (2021-09-03 01:11) 
啊?这么行吗?……
接收、发送不在一个线程的话,始终报:Cannot create children for a parent that is in a different thread;
#7 [wwwfffhhh 09-04 11:26]
我想应该是接收和发送应该在同一个线程,实际就是应该在建立socket对象的线程,然后处理数据可以放到另外的线程中
#8 [fsu0413 09-04 13:13]
首先 QThread有一个大坑,就是QThread本身也是QObject,且QThread本身永远不在QThread自身表示的线程中
QThread的构造函数中构造的变量是QThread->thread()线程上的,而不是这个QThread本身的
然后再说你的问题。
1. QIODevice::write并不是槽函数,不能直接slot,需要给个槽函数然后connect。
2. 如果不需要特别高的并发的话,完全可以把两个QTcpSocket放在同一个线程里,然后就可以直接调用write了。(事实上我自己的程序,并发不是特别高,几十个QTcpSocket都在一个线程。。。。)
#9 回 fsu0413 的帖子 [mugua001 09-04 13:57]
fsu0413:首先 QThread有一个大坑,就是QThread本身也是QObject,且QThread本身永远不在QThread自身表示的线程中
QThread的构造函数中构造的变量是QThread->thread()线程上的,而不是这个QThread本身的
然后再说你的问题。
....... (2021-09-04 13:13) 
嗯。并发不高可以一个线程;
我想学习构一个日志收集的程序:瞬间有数十主机向 日志 收集端连接、传送数据,处理完再发出……
才想着 一个线程专门接收,一个线程专门处理和发送(来自某个Client)数据;每个Client来的请求,临时创建一个线程,回复完即销毁线程;
#10 回 mugua001 的帖子 [fsu0413 09-11 20:18]
mugua001:嗯。并发不高可以一个线程;
我想学习构一个日志收集的程序:瞬间有数十主机向 日志 收集端连接、传送数据,处理完再发出……
....... (2021-09-04 13:57) 
换用线程池吧。。。。。

<< 1 2 3 >> (2/3)

回复 发表
主题 版块