大部分的答案取決於硬件和客戶端和服務器的特定條件 - 如果服務器是單核系統上,只有在串行無論如何處理請求那麼你將看不到任何好處。然而,如果它是一個四核服務器,並且每個服務器插槽都卸載到一個單獨的核心中,那麼您將看到好處,因爲每個請求都可以並行處理(假設每個服務器連接並不是爲服務器上的共享資源而奮鬥它確實)。
至於最好的方法,這也有點取決於你在做什麼 - 如果你有一個場景,每個客戶端得到一個結果,它寫入一些共享資源,你將不得不確保你正確處理這個,for例如,通過創建圍繞寫入共享資源的代碼鎖:
object lock = new object();
lock(lock)
{
// write to the shared resource
}
如果每個客戶端執行它自己獨立的事情,沒有訪問共享資源,那麼你有沒有共享的資源需要保護。
您可以簡單地創建客戶端類的新實例並在執行時針對它執行一些函數,如果需要傳遞參數(此處我們將整數i作爲參數傳遞給TestClient類的運行函數這樣client.Run(i)中對4個獨立的客戶端類都在單獨的線程)執行:
for (int i = 0; i < 4; i++)
{
TestClient client = new TestClient();
Thread thread = new Thread(new ParameterizedThreadStart(client.Run));
thread.Start(i);
}
如果您TestClient.Run(int i)以類方法,那麼就建立連接,並進行呼叫,然後做任何它需要做的任何反應,那麼這應該工作得很好。
希望這會有所幫助。
有了一個體面的網絡連接,100ms是今天的現代硬件上的幾十年:) – 2013-04-30 09:06:47
對不起,我的意思是每100毫秒對tcp服務器進行寫/讀操作。實際的響應顯然要快得多,毫秒或更少。 – Daveo 2013-04-30 09:08:41