線程與進程

進程(process)線程(thread)spa

通俗理解線程

進程關注的是管理內存資源的分配與調度,線程關注的是利用中央處理器去運行代碼進程

線程至關於一個工廠的流水線數量,進程是在某個流水線上正在生產的產品內存

進程是分配資源的基本單位,線程是執行的基本單位用純比喻說 把計算機總體當作國家總預算,進程就是各種專項預算(教育,國防等),線程就是更細分的一級某個特定用途預算(好比具體生產,員工津貼)基本上就很清楚了資源

作個簡單的比喻:進程=火車,線程=車箱同步

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

線程與進程的關係:產品

一、一個進程能夠有多個線程,但至少有一個線程;而一個線程只能在一個進程的地址空間內活動。
二、資源分配給進程,同一個進程的全部線程共享該進程全部資源。
三、CPU分配給線程,即真正在處理器運行的是線程。
四、線程在執行過程當中須要協做同步,不一樣進程的線程間要利用消息傳遞的辦法實現同步。
能夠有多個進程,容許多個任務同時運行。一個進程下能夠建立多個線程,具體執行代碼。
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息