多進程與多線程的選擇

這類我總結了一些進程與線程的特點和選取方法,若有錯誤,不吝指正(^.^)


進程是資源分配的最小單位,線程是CPU調度的最小單位(基本概念啦)


數據同步與共享:(平分秋色

進程共享複雜需要IPC,數據分開同步簡單;

線程共享進程數據,共享簡單,但因此同步複雜;

內存CPU:(線程佔優

進程佔用內存多,切換複雜,CPU利用率低;

線程佔用內存少,切換簡單,CPU利用率高;

創建銷燬和切換:(線程佔優

進程複雜且慢;

線程簡單且塊;

編程與調試:(進程佔優

進程編程與調試簡單;

線程編程與調試複雜;

可靠性:(進程佔優

進程間不會影響;

線程dump整個進程dump

分佈式:(進程佔優

進程適應多核多機分佈式,一個機子不夠擴展到多臺機器方便;

線程適應多核分佈式;

優先情況

線程優先頻繁創建銷燬,如Web服務器,一個連接建立一個線程,斷開則銷燬;

線程優先進行大量計算,如圖像處理、算法處理,因爲要消耗許多CPU,切換頻繁;

線程優先強相關處理、線程優先弱相關處理,強相關是當一列變量變化時另一列變量變化的可能性非常大的關係(如供求與價格),弱相關相反。這並不是一成不變的,要按照實際情況調整;

線程優先多核分佈,進程優先多機分佈;

都滿足時選擇最熟悉且拿手的方式。

在周麗論文的實驗中(博客上看的,大家可以搜到),任務量較大(此處是255線程/進程,輸出文字到控制檯和日誌文件,打印1000次時時間開銷進程小於線程,因爲有線程棧)進程效率高;

線程的銷燬開銷確實小於進程(在10萬個線程/進程的環境下,線程開銷是進程的約13分之一,同樣是周麗論文的實驗中的數據),因此在有大量銷燬的情況優先考慮線程。


可以改進的地方就評個論啦j_0061.gif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章