簡單總結下線程和進程的區別

進程和線程是什麼?

首先你要理解cpu的概念,計算機上的全部操做都是由cpu來執行的,cpu將要執行的操做分爲一個個的任務,這些任務咱們就能夠理解爲進程,而這些任務又分爲一些細粒度更小的子任務,這些子任務就稱做線程多線程

cpu輪流執行任務的,每個任務須要通過如下三個階段:分佈式

  • 加載上下文
  • 執行
  • 保存上下文

也就是說,每個進程從加載、執行,到切換下一個進程執行,都會經歷一樣的一個過程,咱們的cpu就是在無時無刻地進行這樣的進程切換操做操作系統

而咱們又能夠把進程分爲一些細粒度更小的線程,這些線程之間也能夠來回的切換,就像進程同樣,可是卻不須要加載和保存上下文的操做,由於這些線程都是共享上下文的線程

進程與線程的區別

這裏爲你們簡單總結了一些進程和線程的區別,若有錯誤歡迎指正:隊列

  • 性質不一樣:進程是資源分配的基本單位,線程是cpu執行運算和調度的基本單位
  • 歸屬不一樣:一個操做系統中能夠有不少進程,一個進程能夠有不少線程
  • 開銷不一樣:進程建立、銷燬和切換的開銷都要遠大於線程
  • 擁有資源不一樣:每一個進程都擁有本身的內存和資源,一個進程中的線程會共享這些內存和資源
  • 通訊方式不一樣:進程之間能夠經過管道、消息隊列、共享內存、信號量,以及Socket等機制實現通訊,線程之間主要經過共享變量及其變種形式實現通訊
  • 控制和影響能力不一樣:子進程沒法控制父進程,一個進程發生異常時通常不會影響其餘進程;子線程能夠控制父線程,若是主線程發生異常,會影響其所在進程和其他線程
  • 擴展能力不一樣:多進程能夠方便地擴展到多機分佈式系統上,多線程想要擴展到多臺機器上就很困難
  • cpu利用率不一樣:進程的cpu利用率低,由於須要額外的上下文切換開銷;線程的cpu利用率高,由於切換簡單
  • 可靠性不一樣:進程的可靠性要高於線程
相關文章
相關標籤/搜索