我正在寫一個服務器,需要服務於大量的客戶端。我正在考慮什麼是最好的線程策略:我讀了.NET Framework上的ThreadPool
類,在考慮參數(如運行機器的內核數量)後分配線程,這很好。但是,如果沒有線程可用,它將等待一個可用。C#服務器線程分配
我的套接字上的連接可能相當長,即一個線程可能會運行相當長的時間,然後纔會完成服務其客戶端並終止。因此,如果我爲每個套接字啓動一個新線程,理論上可能有大量線程處於空閒狀態(等待套接字上的數據),但仍然被認爲正在運行,從而阻止ThreadPool
分配新的線程和服務其他客戶端。另一方面,使用預定義數量的線程爲所有套接字提供服務並不能最大限度地利用機器的多個內核。
我假設有一個更好的方法來做到這一點...任何建議?
謝謝。