當它更好地編寫單線程事件或多線程或叉服務器?哪種方法更approriate爲:誰擔任靜 當它更好地寫單線程事件服務器等
- Web服務器
- 以前的plus會向MySQL提出一些請求嗎?
例如,語言是C/C++。我非常想解決這個問題。謝謝。
當它更好地編寫單線程事件或多線程或叉服務器?哪種方法更approriate爲:誰擔任靜 當它更好地寫單線程事件服務器等
例如,語言是C/C++。我非常想解決這個問題。謝謝。
鑑於現代處理器是多核的,您應該始終編寫代碼,假設它可能在某些時候是多線程的(使可重入的東西儘可能地在不可能的地方使用,並且使用易於插入的接口一個實現必要的鎖定的實現)。
如果您的每秒查詢次數(qps)非常少,那麼您可能能夠脫離單線程事件服務器。儘管如此,如果您增加qps並需要處理更多事件,我仍會建議以允許多線程的方式編寫代碼。
可以通過將單線程服務器轉換爲分叉服務器來擴展單線程服務器;但是,分叉服務器使用更多資源 - 使用分叉服務器時,所有請求共有的內存都會在內存中複製,而在單個多線程服務器中僅需要此數據的一個副本。此外,如果多線程服務器利用真正的並行性並且可以並行執行單個請求處理的多個部分,則它可以提供更低的延遲。
關於單線程與多線程服務器有一個很好的討論joelonsoftware,