2011-05-20 57 views

回答

2

通過保持連接處於打開狀態,您將阻止資源,但不會產生定期拆除連接和設置連接的開銷。設置&在函數調用下關閉一個套接字連接要貴得多。將關閉意圖發送到連接終點,釋放與其關聯的內核資源和內存。爲了打開連接,發生相反的情況。爲了分配內核資源,可能會有序列化的調用(取決於內核實現),這會影響整個系統的性能。最後但並非最不重要的是,命中方法不是一個確定性模型。

+0

+1重複拆卸和設置可能是最大的成本 – seand 2011-05-20 03:36:36

+0

謝謝!我想到了這個,但並不確定,也計算聽到有人熟知的話會很高興...... – algorithmicCoder 2011-05-20 03:49:51

1

比方說,你有一個線程阻塞在一個等待響應的套接字上。 (如彗星)。在那段時間內,線程不是由內核調度的,機器上的其他東西可以運行。但是,如果您正在輪詢該線程正忙於簡短的等待時間。這也增加了延遲,因爲在輪詢發生之前,您不會知道需要做些什麼。

+0

您是否說內存在連接處於打開狀態時也釋放,並且沒有任何內容正在發送到客戶端?... – algorithmicCoder 2011-05-20 03:48:59

+0

大多數情況下,連接保持打開並等待服務器的響應。 「大部分情況都沒有發生」。 (實際上是更精確的,但是資源(例如內存,內核句柄)在這段時間內是捆綁在一起的。 – seand 2011-05-20 03:57:06