1

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

处理大量本地数据时会出现问题,外国数据被缓冲,直到所有本地数据都发送后才进入比较过程。我需要在特定时间范围内比较数据,所以这会导致超时。

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

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

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

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

4

1 回答 1

1

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

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

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

外部数据被缓冲,直到所有本地数据都发送完毕后才进入比较过程

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

正如您所说,您是多线程的新手,我建议您首先阅读这篇文章并将其示例用作模板。

于 2016-05-05T12:32:58.970 回答