0

我正在使用 Qt 5.6。我正在开发一个简单的聊天应用程序,并且在网上遇到了几个地方都说您必须创建一个新线程来包含QTcpSocket以处理新线程中的所有新连接。

我试图弄清楚为什么你不能只使用 aQListQTcpSockets处理所有的连接。有人可以向我解释为什么吗?

如果我弄错了,这是一件非常好的事情,也请告诉我。

提前致谢。

4

1 回答 1

1

使用多线程 tcp 服务器或使用一个线程 tcp 服务器取决于您的任务。在某些任务中,一个线程就足够了,您可以“只使用一个QListQTcpSockets。此类任务的主要特点是:

  1. 少量同时传入的连接。(当你必须使用多线程时,同时传入连接的临界数量也取决于你的任务。但我相信,当你有超过 10 个同时传入连接时,你应该考虑多线程。)
  2. 低网络负载/低网络交互。

在其他情况下,最好让您的 tcp 服务器有机会同时进行一些工作。一个线程中有多少个连接取决于您的任务,但是创建非常多的线程也是一个坏主意,因为这样您就会遇到性能问题。许多时间将花在上下文切换上。

我认为,在您的情况下,您可以使用最简单的变体并“仅使用 a QListof QTcpSockets

于 2016-08-28T15:39:39.047 回答