作業系統 多程序 多執行緒

2021-09-16 22:08:21 字數 861 閱讀 3657

對比維度

多程序多執行緒

結論資料共享

資料共享複雜,需要用ipc

共享程序資料,資料共享簡單

多程序 < 多執行緒

資料同步

資料是分開的,同步簡單

因為共享程序資料,同步複雜

多程序 > 多執行緒

記憶體、cpu

占用記憶體多,切換複雜,cpu利用率低

占用記憶體少,切換簡單,cpu利用率高

多程序 < 多執行緒

建立、銷毀、切換

建立、銷毀、切換相對複雜,速度慢

建立、銷毀、切換簡單,速度快

多程序 < 多執行緒

程式設計、除錯複雜度

程式設計除錯相對簡單

都很複雜

多程序 > 多執行緒

可靠性程序之間不會相互影響

乙個執行緒掛掉,會導致整個程序掛掉

多程序 < 多執行緒

分布式適應於多核、多機分布式;如果一台機器不夠,擴充套件到多台機器比較簡單

適應於多核分布式

多程序 > 多執行緒

當需要比較頻繁的建立、銷毀時,優先用多執行緒。

當需要大量計算的時候優先使用多執行緒。

強相關處理使用執行緒,弱相關使用程序。

可能要擴充套件多機分布式的用程序,多核分布式的用執行緒。

兩者沒有明顯差別,推薦用自己最熟悉、最拿手的方式。

消耗資源的對比:

通訊方式:

執行緒的自身優勢:

任務執行效率的比較

在建立和銷毀上的效率比較

單核雙核

後續待補。(我只是似乎意會了,還不好言傳。。。)

關於作業系統內部如何建立、銷毀程序、執行緒,即為什麼這些操作程序消耗會比執行緒大,還沒有搞明白。日後待補。

多執行緒 多程序?

這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...

多程序,多執行緒

多工程式設計 通過應用程式利用多個計算機核心達到多工同時執行的 目的,從此來提公升程式執行效率 多程序,多執行緒 程序 程式在計算機中一次執行的過程 程式 靜態的描述,不占有計算機資源 程序 是乙個動態的過程,占有cpu,記憶體等計算機資源 有一定的生命週期 同乙個程式,每次執行都是不同的程序,因為...

多執行緒 多程序

是什麼?能幹什麼?單執行緒情況下,執行效率低。系統的資源沒有得到充分利用。計算密集型 運算量比較大 io密集型 cpu空閒,輸入輸出較多 怎麼幹?爬蟲 io密集型 多執行緒 橫向 所有的程式的執行都在乙個執行緒中,程式啟動時,啟動多執行緒,每個執行緒跑同樣的 縱向 將程式進行拆分,每個執行緒跑特定的...