2016-05-05 30 views
1

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

处理大量本地数据时会出现问题将外部数据缓存起来,直到发送完所有本地数据后才会进入比较过程。我需要在特定时间范围内比较数据,因此会导致超时。

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

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

我查了财富服务器的例子 http://doc.qt.io/qt-5/qtnetwork-threadedfortuneserver-example.html 但我需要知道是否有可能和逻辑使用不同的线程来发送和接收相同的连接上。

PS。我是多线程新手,所以如果我误解了某些概念,我很抱歉。

+0

'QTcpConnection'只能存在于_one_线程中。您可以在同一个线程中发送/接收。也就是说,你不需要在与连接相同的线程中处理数据,这是实际需要一段时间的部分。 –

回答

1

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

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

这听起来像你用来处理数据的体系结构可能需要修改。

国外数据被缓冲,直到所有本地数据被发送

这听起来像更多的问题,并在多线程将是有益的面积不会进入比较过程。因此,使用多线程来处理数据,而不是控制服务器之间的通信。

正如你所说你是多线程的新手,我建议你首先阅读this article并将它的例子作为模板。