我正在C#中編寫一個應用程序,我希望維護大量的開放套接字(tcp),並能夠響應來自他們全部。現在,正常的事情(afaik)會在所有這些函數上調用BeginRead,但據我所知,BeginRead生成一個線程,並且等待該線程中的數據,並且我已經讀取了線程不在使用其中很多時會趨於很好地擴展。雖然我可能對此有錯,但如果是這種情況,請告訴我。在ac#應用程序中維護大量打開的套接字
這可能聽起來很愚蠢,但我想要的是能夠儘可能多地保持打開的套接字連接(就像我的機器/操作系統所允許的那樣),同時仍能夠對來自任何他們儘可能快地使用盡可能少的系統資源來做到這一點。
我想過的是把它們放在某種列表中,然後在循環中運行一個單獨的線程來檢查新數據並對新數據進行操作(如果有的話),儘管我認爲這樣的循環最終會炸燬我的cpu(因爲循環中沒有任何東西阻塞)。有沒有辦法(簡單與否,我不介意進入一些更復雜的算法來解決這個問題),我可以做到這一點?任何幫助,將不勝感激。
這是否意味着我可以叫ReadAsync上所有的人,這將是最有效的方法是什麼? – Alxandr 2011-05-27 12:38:30
對這兩個問題的回答:是的。 – jgauffin 2011-05-27 12:40:32
您是否也碰巧有鏈接描述BeginRead和ReadAsync之間的區別?或者這只是合成的? – Alxandr 2011-05-27 12:44:29