我正在學習C#異步套接字編程,並且我已經瞭解到在某種池中重用字節緩衝區是一個好主意,然後在從套接字接收數據時根據需要檢查一次。一個大的字節緩衝區或幾個小的緩衝區?
但是,我已經看到了兩種不同的字節數組池的使用方法:一種使用簡單的隊列系統,並根據需要將其從隊列中添加/刪除。如果請求了一個,並且隊列中沒有剩餘,則會創建一個新的字節數組。
我見過的另一種方法是在整個程序中使用一個大字節數組。隊列的思想仍然適用,但它是一個確定要使用的字節數組的片段(偏移量)的整數隊列。如果有人被請求並且隊列中沒有更多信息,則必須調整數組的大小。
其中哪一個是高度可擴展的服務器的更好解決方案?我的直覺是,使用許多字節數組會更便宜,因爲我可以想象根據需要調整數組的大小(即使我們將它分成大塊)會非常昂貴,特別是當它變大時。使用多個陣列看起來更直觀 - 使用一個我沒有想到的巨型陣列有什麼優勢?
良好的調用,必須警告不要做像「if(queue.Count> 0){... dequeue ...}」這樣的事情。 – user7116 2009-02-24 14:53:07