[開發基礎]進程和線程的比喻

抽象概念:進程是資源分配的最小單位,線程是CPU調度的最小單位

比喻:進程=火車,線程=車廂

  • 線程在進程下行進(單純的車廂無法運行)
  • 一個進程可以包含多個線程(一輛火車可以有多個車廂)
  • 不同進程間數據很難共享(一輛火車上的乘客很難換到另外一輛火車,比如站點換乘)
  • 同一進程下不同線程間數據很易共享(A車廂換到B車廂很容易)
  • 進程要比線程消耗更多的計算機資源(採用多列火車相比多個車廂更耗資源)
  • 進程間不會相互影響,一個線程掛掉將導致整個進程掛掉(一列火車不會影響到另外一列火車,但是如果一列火車上中間的一節車廂着火了,將影響到所有車廂)
  • 進程可以拓展到多機,進程最多適合多核(不同火車可以開在多個軌道上,同一火車的車廂不能在行進的不同的軌道上)
  • 進程使用的內存地址可以上鎖,即一個線程使用某些共享內存時,其他線程必須等它結束,才能使用這一塊內存。(比如火車上的洗手間)-"互斥鎖"
  • 進程使用的內存地址可以限定使用量(比如火車上的餐廳,最多隻允許多少人進入,如果滿了需要在門口等,等有人出來了才能進去)-“信號量”

參考:

深入理解進程和線程

進程與線程的一個簡單解釋

知乎:線程和進程的區別是什麼

線程與進程的區別

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