我有一個FTP服務器,在QTcpServer和QTcpSocket之上實現。在單獨的線程中處理每個TCP連接會提高延遲嗎?
予取信號和槽機制同時支持多個TCP連接的優點,即使我有一個單一的線程。我的代碼儘快返回到事件循環,它不會阻塞(不等待函數),並且它不會在任何地方使用嵌套的事件循環。這樣我已經有了合作多任務,就像Win3.1應用程序一樣。
但很多其他FTP服務器是多線程的。現在我想知道是否使用單獨的線程來處理每個TCP連接會提高性能,尤其是延遲。
一方面,線程會延遲等待時間,因爲您需要爲每個新連接啓動一個新線程,但另一方面,通過協作式多任務處理,其他TCP連接必須等到我返回主循環在它們的readyRead()
/bytesWritten()
信號可以被處理之前。
提高 「潛伏」?沒有。提高「響應能力」?只有當你讀取時才被阻止;並且套接字I/O會阻止您的用戶界面。這似乎並不是這種情況。 – paulsm4 2013-02-26 17:36:08