我有一个 FTP 服务器,在 QTcpServer 和 QTcpSocket 之上实现。
我利用信号和槽机制同时支持多个 TCP 连接,即使我只有一个线程。我的代码尽快返回到事件循环,它不会阻塞(没有等待函数),并且它不会在任何地方使用嵌套事件循环。这样我就已经有了协同多任务处理,就像 Win3.1 应用程序一样。
但是很多其他 FTP 服务器都是多线程的。现在我想知道使用单独的线程来处理每个 TCP 连接是否会提高性能,尤其是延迟。
一方面,线程会增加延迟,因为您需要为每个新连接启动一个新线程,但另一方面,在我的协作多任务处理中,其他 TCP 连接必须等到我返回主循环后才能发出readyRead()
/bytesWritten()
信号可以处理。