對比維度
多程序多執行緒
結論資料共享
資料共享複雜,需要用ipc
共享程序資料,資料共享簡單
多程序 < 多執行緒
資料同步
資料是分開的,同步簡單
因為共享程序資料,同步複雜
多程序 > 多執行緒
記憶體、cpu
占用記憶體多,切換複雜,cpu利用率低
占用記憶體少,切換簡單,cpu利用率高
多程序 < 多執行緒
建立、銷毀、切換
建立、銷毀、切換相對複雜,速度慢
建立、銷毀、切換簡單,速度快
多程序 < 多執行緒
程式設計、除錯複雜度
程式設計除錯相對簡單
都很複雜
多程序 > 多執行緒
可靠性程序之間不會相互影響
乙個執行緒掛掉,會導致整個程序掛掉
多程序 < 多執行緒
分布式適應於多核、多機分布式;如果一台機器不夠,擴充套件到多台機器比較簡單
適應於多核分布式
多程序 > 多執行緒
當需要比較頻繁的建立、銷毀時,優先用多執行緒。
當需要大量計算的時候優先使用多執行緒。
強相關處理使用執行緒,弱相關使用程序。
可能要擴充套件多機分布式的用程序,多核分布式的用執行緒。
兩者沒有明顯差別,推薦用自己最熟悉、最拿手的方式。
消耗資源的對比:
通訊方式:
執行緒的自身優勢:
任務執行效率的比較
在建立和銷毀上的效率比較
單核雙核
後續待補。(我只是似乎意會了,還不好言傳。。。)
關於作業系統內部如何建立、銷毀程序、執行緒,即為什麼這些操作程序消耗會比執行緒大,還沒有搞明白。日後待補。
多執行緒 多程序?
這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...
多程序,多執行緒
多工程式設計 通過應用程式利用多個計算機核心達到多工同時執行的 目的,從此來提公升程式執行效率 多程序,多執行緒 程序 程式在計算機中一次執行的過程 程式 靜態的描述,不占有計算機資源 程序 是乙個動態的過程,占有cpu,記憶體等計算機資源 有一定的生命週期 同乙個程式,每次執行都是不同的程序,因為...
多執行緒 多程序
是什麼?能幹什麼?單執行緒情況下,執行效率低。系統的資源沒有得到充分利用。計算密集型 運算量比較大 io密集型 cpu空閒,輸入輸出較多 怎麼幹?爬蟲 io密集型 多執行緒 橫向 所有的程式的執行都在乙個執行緒中,程式啟動時,啟動多執行緒,每個執行緒跑同樣的 縱向 將程式進行拆分,每個執行緒跑特定的...