【作業系統】程式與執行緒

社恐患者發表於2020-09-23

作者:知乎使用者
連結:https://www.zhihu.com/question/25532384/answer/411179772
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

做個簡單的比喻:程式=火車,執行緒=車廂

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

相關文章