【发布时间】:2013-02-12 06:46:51
【问题描述】:
我有一个 FTP 服务器,在 QTcpServer 和 QTcpSocket 之上实现。
我利用信号和槽机制同时支持多个 TCP 连接,即使我只有一个线程。我的代码尽快返回到事件循环,它不会阻塞(没有等待函数),并且它不会在任何地方使用嵌套事件循环。这样我就已经有了协作式多任务处理,就像 Win3.1 应用程序一样。
但是很多其他的 FTP 服务器都是多线程的。现在我想知道使用单独的线程处理每个 TCP 连接是否会提高性能,尤其是 延迟。
一方面,线程会增加延迟,因为您需要为每个新连接启动一个新线程,但另一方面,在我的协作多任务处理中,其他 TCP 连接必须等到我之前返回到主循环可以处理他们的readyRead()/bytesWritten() 信号。
【问题讨论】:
-
改善“延迟”?不。提高“响应能力”?仅当您阻止读取时;并且套接字 I/O 会阻止您的 UI。这似乎不是这里的情况。
标签: multithreading qt latency qtcpsocket