QTcpServer在不同的线程中接收和发送

时间:2016-05-05 12:09:58

标签: c++ multithreading qt qtcpserver

我在QT框架(c ++)中有一个软件,它假定将处理过的(本地)数据发送到其他服务器并接收在其他服务器上处理的相同(外部)数据并进行比较。

处理大量本地数据时出现问题外部数据被缓冲,并且在发送所有本地数据之前不会进入比较过程。我需要在特定时间范围内比较数据,因此会导致超时。

一个想法是使用一个线程来分派本地数据,另一个线程来接收和比较外部数据。 QTcpServer可能需要一个互斥锁来保护它不会同时读写。

这可能与一个连接有关,或者在QT环境中有一个用于调度的连接和一个用于接收的连接会更好吗?

我检查了财富服务器示例 http://doc.qt.io/qt-5/qtnetwork-threadedfortuneserver-example.html 但我需要知道在同一个连接上使用不同的线程进行发送和接收是否可行且合乎逻辑。

PS。我是多线程的新手,所以如果我误解了一些概念,我会道歉。

1 个答案:

答案 0 :(得分:1)

没有看到任何代码,很难明确回答这个问题。但是,这可能会让你走上正确的轨道......

我不希望你需要不同的线程来发送/接收数据; QTcpSocket是异步的。

听起来您用于处理数据的架构可能需要修改。

  

外国数据被缓冲,并且在发送所有本地数据之前不会进入比较过程

这听起来像是一个问题,多线程有益的领域。因此,使用多线程处理数据,而不是控制服务器之间的通信。

当您声明自己是多线程的新手时,我建议您先阅读this article并将其示例作为模板使用。