[linux] 多進程和多線程


1.在Linux系統下,啟動一個新的進程必須分配給它獨立的地址空間,建立眾多的數據表來維護它的代碼段、堆棧段和數據段,這是一種”昂貴”的多任務工作方式。
2.而運行於一個進程中的多個線程,它們彼此之間使用相同的地址空間,共享大部分數據,啟動一個線程所花費的空間遠遠小於啟動一個進程所花費的空間,而且,線程間彼此切換所需的時間也遠遠小於進程間切換所需要的時間

3.根本區別就一點:用多進程每個進程有自己的地址空間(address space),線程則共享地址空間。所有其它區別都是由此而來的
1)速度:線程產生的速度快,線程間的通訊快、切換快等,因為他們在同一個地址空間內。
2)資源利用率:線程的資源利用率比較好也是因為他們在同一個地址空間內。
3)同步問題:線程使用公共變量/內存時需要使用同步機制還是因為他們在同一個地址空間內。

多線程共享地址空間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM