進程與線程的區別

根本區別:進程是資源分配的最小單位,線程是程序執行的最小單位

  • 進程有自己的獨立地址空間,每啓動一個進程,系統就會爲它分配地址空間,程序之間的切換會有較大的開銷;而線程是共享進程中的數據,使用相同的地址空間,因此CPU切換一個線程的花費遠比進程要小很多,同時創建一個線程的開銷也比進程要小很多。
  • 在操作系統中能同時運行多個進程(程序);而在同一個進程(程序)只少有一個線程,多線程的處理程序是順序進行。
  • 進程有自己獨立的地址空間,所以在多進程程序中,當一個進程死掉,不會對另外一個進程造成影響。而多線程程序只要有一個線程死掉,當前整個進程也會死掉。

把這些概念拿到瀏覽器中來說,當你打開一個 Tab 頁時,其實就是創建了一個進程,一個進程中可以有多個線程,比如渲染線程、JS 引擎線程、HTTP 請求線程等等。當你發起一個請求時,其實就是創建了一個線程,當請求結束後,該線程可能就會被銷燬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章