想象一下,我們有一個客戶端,它不斷髮送大量的雙重數據。
如何獲得最快的數據處理方式:分叉或/和多線程
現在我們正試圖使一臺服務器,它可以接收和處理來自客戶端的數據。
這是事實:
服務器可以在很短的時間內收到一個double。
有一個函數可以在服務器上處理一個double,這需要超過3分鐘才能處理一個double。
我們需要讓服務器儘可能快地處理來自客戶端的1000個雙重數據。
我如下的想法:
使用一個線程池來創建多個線程,每個線程都可以處理一個雙。
所有這些都是在Linux中。
我的問題:
現在我的服務器只是一個包含多線程的進程。我正在考慮如果我使用fork()
,它會更快嗎?
我想只用fork()
沒有多線程應該是一個壞主意,但如果我創建兩個過程和他們每個人都包含多線程是什麼?這種方法可以更快嗎?
順便說一句我已讀:
What is the difference between fork and thread?
Forking vs Threading
請注意,你有你的倒退措辭:一** **服務器提供服務的調用。您正在描述一個安裝程序,其中*服務器*將數據發送給*客戶端*以進行處理。從術語的角度來看,這應該被顛倒過來。你有一個**客戶端**,它想要發送數據到**服務器**進行處理;而不是相反! – GhostCat
@GhostCat謝謝。事實上,我把它稱爲「服務器」,因爲它是「服務器」,它是「listen」,它是「connect」的「客戶端」。 – Yves
只是說:你應該在你的措辭,文檔等方面確保你的團隊中的每個人都明白你的服務器客戶端的本質,或者是客戶端服務器? – GhostCat