2012-03-14 179 views
-3

我正在用C編寫一個簡單的客戶服務器。製作多進程服務器而不是多線程服務器的優點是什麼?多進程服務器或多線程服務器?

+0

你經過研究,瞭解進程和線程,你不需要問這個問題。 – 2012-03-14 11:16:30

回答

1

如果不知道你的平臺,這是不現實的答案。傳言表明,在Windows上啓動新進程非常昂貴,但開始新線程幾乎是免費的。所以如果性能是唯一的考慮因素,Windows環境更喜歡線程。

在Linux上,線程是作爲新進程的特殊情況變體實現的。他們幾乎都是免費的。選擇哪一個會導致長期的最佳代碼。

在其他平臺上,線程可能更昂貴 - 或者可能無法使用多個處理器。在這些平臺上,選擇進程。

當然,這不僅僅是純粹的表現。 很好,關於shared-nothing designs - 如果您從程序中刪除所有共享數據,可以極大地降低同時訪問這些數據結構的代碼段中可能出現的錯誤。此外,由於進程不共享運行時內存,因此危害一個進程的攻擊者可能無法控制其他進程。 (或者,這可能更困難。)線程只會讓攻擊者閱讀任何想要的內容。

0

優點使得多進程服務器,而不是多線程之一的:

各處理的受保護存儲器空間防止一個過程存儲的不希望的損壞,從另一個。

缺點使得多進程服務器,而不是多線程之一的:

各處理的受保護存儲器空間防止期望的一個過程和另一個之間的直接通信。

看看你的要求,你挑..