【问题标题】:QTcpServer receiving and sending in a different threadQTcpServer 在不同的线程中接收和发送
【发布时间】:2016-08-31 05:20:15
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • QTcpConnection 只能存在于 一个 线程中。您必须在同一个线程中发送/接收。也就是说,您不需要在与连接相同的线程中处理数据,这实际上可能需要一段时间。

标签: c++ multithreading qt qtcpserver


【解决方案1】:

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

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

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

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

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

正如您所说,您是多线程新手,我建议您先阅读this article 并将其示例用作模板。

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2013-07-19
    • 1970-01-01
    • 2013-02-28
    • 2018-12-23
    相关资源
    最近更新 更多