我有一个FTP服务器,在QTcpServer和QTcpSocket之上实现。在单独的线程中处理每个TCP连接会提高延迟吗?
予取信号和槽机制同时支持多个TCP连接的优点,即使我有一个单一的线程。我的代码尽快返回到事件循环,它不会阻塞(不等待函数),并且它不会在任何地方使用嵌套的事件循环。这样我已经有了合作多任务,就像Win3.1应用程序一样。
但很多其他FTP服务器是多线程的。现在我想知道是否使用单独的线程来处理每个TCP连接会提高性能,尤其是延迟。
一方面,线程会延迟等待时间,因为您需要为每个新连接启动一个新线程,但另一方面,通过协作式多任务处理,其他TCP连接必须等到我返回主循环在它们的readyRead()
/bytesWritten()
信号可以被处理之前。
提高 “潜伏”?没有。提高“响应能力”?只有当你读取时才被阻止;并且套接字I/O会阻止您的用户界面。这似乎并不是这种情况。 – paulsm4 2013-02-26 17:36:08