概念
- 程序:
進行資源配置設定的基本機關CPU
- 線程:
排程的最小機關CPU
通俗一點講:程序可以描述為一個應用程式的執行程式,線程則是程序内部用來執行某個部分的程式。
做個簡單的比喻:程序=火車,線程=車廂
- 線程在程序下行進(單純的車廂無法運作)
- 一個程序可以包含多個線程(一輛火車可以有多個車廂)
- 不同程序間資料很難共享(一輛火車上的乘客很難換到另外一輛火車,比如站點換乘)
- 同一程序下不同線程間資料很易共享(A車廂換到B車廂很容易)
- 程序要比線程消耗更多的計算機資源(采用多列火車相比多個車廂更耗資源)
- 程序間不會互相影響,一個線程挂掉将導緻整個程序挂掉(一列火車不會影響到另外一列火車,但是如果一列火車上中間的一節車廂着火了,将影響到所有車廂)
- 程序可以拓展到多機,程序最多适合多核(不同火車可以開在多個軌道上,同一火車的車廂不能在行進的不同的軌道上)
- 程序使用的記憶體位址可以上鎖,即一個線程使用某些共享記憶體時,其他線程必須等它結束,才能使用這一塊記憶體。(比如火車上的洗手間)-"互斥鎖"
- 程序使用的記憶體位址可以限定使用量(比如火車上的餐廳,最多隻允許多少人進入,如果滿了需要在門口等,等有人出來了才能進去)-“信号量”
當一個應用程式啟動時,一個程序就被建立了。應用程式可能會建立一些線程幫助它完成某些工作,但這不是必須的。作業系統會劃分出一部分記憶體給這個程序,目前應用程式的所有狀态都将儲存在這個私有的記憶體空間中。
一個程式并不一定隻有一個程序,程序可以讓作業系統再另起一個程序去處理不同的任務。當這種情況發生時,新的程序又将占據一塊記憶體空間。當兩個程序需要通信時,它們進行程序間通訊
- 多程序:指的是在同一個時間裡,同一個計算機系統中如果允許兩個或兩個以上的程序處于運作狀态。多程序帶來的好處是明顯的,比如你可以聽歌的同時,打開編輯器敲代碼,編輯器和聽歌軟體的程序之間絲毫不會互相幹擾。
- 多線程:指程式中包含多個執行流,即在一個程式中可以同時運作多個不同的線程來執行不同的任務,也就是說允許單個程式建立多個并行執行的線程來完成各自的任務。
出處:轉載請注明 https://www.cnblogs.com/sun-null/