站長資訊網
        最全最豐富的資訊網站

        linux中多進程和多線程的區別是什么

        區別:1、多進程中數據共享復雜、同步簡單,而多線程中數據共享簡單、同步復雜;2、多進程占用內存多、切換復雜、速度慢、CPU利用率低,而多線程占用內存少、切換簡單、CPU利用率高;3、多進程的編程簡單、調試簡單,而多線程的編程復雜、調試復雜。

        linux中多進程和多線程的區別是什么

        本教程操作環境:linux5.9.8系統、Dell G3電腦。

        linux中多進程和多線程的區別

        進程:運行中(加載到內存上)的程序。–>執行過程稱之為進程。

        線程:線程是輕量級的進程,是進程中的一條執行序列(一組有序指令),一個進程至少有一條線程。

        main函數所代表的執行序列稱之為主線程。通過線程庫創建的線程稱之為函數線程。

        對比維度 多進程 多線程 總結
        數據共享,同步

        數據共享復雜,需要用IPC;

        數據是分開的,同步簡單

        因為共享進程數據,共享數據簡單,同時導致同步也復雜 各有優勢
        內存、CPU 占用內存多,切換復雜,速度慢,CPU利用率低 占用內存少,切換簡單CPU利用率高 多線程優勢
        創建銷毀、切換 創建銷毀,切換復雜,速度慢 創建銷毀,切換簡單,速度很快 多線程優勢
        編程調試 編程簡單,調試簡單 編程復雜,調試復雜 多進程優勢
        可靠性 進程間不會互相影響 一個線程掛掉將導致整個進程掛掉 多進程優勢
        分布式 適用于多核、多機分布式;如果一臺機器不夠,拓展到多臺機器比較簡單 適用于多核分布式 多進程優勢

        多線程的優點:

        • 無需跨進程邊界;

        • 程序邏輯和控制方式簡單;

        • 所有線程可以直接共享內存和變量;

        • 線程方式消耗的總資源比進程少

        多進程的優點

        • 每個進程相互獨立,不影響主程序的穩定性,子進程崩潰沒關系;

        • 通過增加CPU就可以容易擴充性能;

        • 可以盡量減少線程加鎖/解鎖的影響,極大提高性能;

        多線程的缺點

        • 每條線程與主程序共用地址空間,大小受限;

        • 線程之間的同步和加鎖比較麻煩;

        • 一個線程的崩潰可能影響到整個程序的穩定性;

        • 到達一定的線程數后,即使在增加CPU也無法提高性能;

        多進程的缺點:

        • 邏輯控制復雜,需要和主程序交互;

        • 需要跨進程邊界,如果有大數據傳輸,不適合;

        • 多進程調度開銷比較大

        應用情況如下:

        1)需要頻繁創建銷毀的用線程

        這種原則最常見的就是Web服務器了,來一個連接建立一個線程,斷了就銷毀線程。如果用進程,創建銷毀的代價是很難承受的。

        2)需要進行大量計算的優先用線程

        所謂大量計算就是消耗很多CPU,切換頻繁,這種情況下線程是最合適的。

        這種原則最常用的就是圖像處理,算法處理。

        3)強相關的處理用線程,弱相關的處理用進程

        什么叫強相關、弱相關?理論上很難定義,舉一個例子加以解釋。

        一般的Server需要完成如下任務:消息收發、消息處理。“消息收發”、“消息處理”就是弱相關的處理,而“消息處理”里面又分為“消息解碼”、“業務處理”,這兩個業務相對來說就強很多。因此“消息收發”、“消息處理”可以分進程設計,“消息解碼”、“業務處理”可以分線程設計。

        4)可能擴展到多機分布的用進程,多核分布的用線程(具體原因請看上表)

        消耗資源:

        從內核的觀點看,進程的目的就是擔任分配系統資源(CPU時間、內存等)的基本單位。線程是進程的一條執行流,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。

        線程,他們之間使用相同的地址空間,共享大部分數據,啟動一個線程所花費的空間遠遠小于啟動一個進程所花費的空間,而且線程間彼此切換所需要的時間也遠遠小于進程間切換所用的時間。

        通訊方式:

        進程間傳遞數據只能通過通訊的方式,既費時又不方便。線程時間數據大部分共享,快捷方便,但是數據同步需要鎖。

        線程自身優勢:

        提高應用程序相應;使用CPU系統更加有效;操作系統會保證當線程數目不大于CPU數目時候,不同的線程運行在不同的CPU上;改善程序結構,一個即長又復雜的進程可以考慮分為多個線程,成為幾個獨立或者半獨立的部分,這樣的程序會易于理解和修改。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久成人精品视频| 99精品国产高清一区二区麻豆| 亚洲午夜精品第一区二区8050| 久久97精品久久久久久久不卡| 亚洲精品岛国片在线观看| 亚洲精品成人av在线| 精品久久久久香蕉网| 亚洲精品专区| 国产午夜精品一区二区三区小说| 动漫精品专区一区二区三区不卡| 亚洲AV无码国产精品麻豆天美 | 国产精品自在在线午夜福利| 国产精品免费福利久久| 一区二区国产精品| 久99久无码精品视频免费播放| 51国偷自产精品一区在线视频| 99久久国产热无码精品免费| 久久国产热精品波多野结衣AV| 亚洲精品无码MV在线观看| 精品熟女少妇aⅴ免费久久 | 精品久久久久久国产| 99精品高清视频一区二区| 人妻精品久久无码专区精东影业| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久精品中文字幕久久| 99热精品在线观看| 国产精品免费福利久久| 国产麻豆一精品一AV一免费| 久久国产精品99精品国产| 国产精品嫩草影院久久| 94久久国产乱子伦精品免费 | 久久99久久99小草精品免视看| 国产午夜精品无码| 精品亚洲aⅴ在线观看| 国产精品人人爽人人做我的可爱 | 中国国产精品| 亚洲AV无码成人精品区蜜桃| 亚洲精品无码鲁网中文电影| 无码精品国产VA在线观看DVD| 爽爽精品dvd蜜桃成熟时电影院| 无码人妻精品一区二区三区99仓本|