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

        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精品国产99久久6| 国产区精品福利在线观看精品| 久久精品亚洲一区二区三区浴池 | 青青草国产精品| 国产精品对白刺激久久久| 亚洲午夜国产精品无码| 国产在线观看一区二区三区精品| 四虎精品8848ys一区二区| 91精品国产乱码久久久久久| 熟妇无码乱子成人精品| 中文国产成人精品久久不卡| 久久精品国产只有精品66| 国产精品哟女在线观看| 91久久精品国产成人久久| 久久久精品午夜免费不卡| 国产精品视频一区二区三区经| 国产亚洲精品a在线无码| 久久精品国产亚洲av日韩| 麻豆aⅴ精品无码一区二区| 亚洲线精品一区二区三区影音先锋| 四库影院永久四虎精品国产| 欧美精品国产一区二区三区| 精品综合久久久久久88小说| 国产一区二区精品久久岳| 国产精品内射久久久久欢欢| 99亚洲精品视频| 国产成人精品久久一区二区三区av | 久久永久免费人妻精品下载| 在线亚洲精品福利网址导航| 亚洲精品国产精品乱码不卞| 亚洲精品亚洲人成在线观看下载| 亚洲国产精品激情在线观看| 亚洲精品视频久久久| 亚洲精品第一国产综合精品99| 亚洲欧洲精品成人久久曰影片| 中文精品99久久国产| 亚洲国产精品成人精品无码区| 亚洲AV无码久久精品色欲| 精品人妻大屁股白浆无码| 97久久精品无码一区二区|