1. 程式人生 > >程序與執行緒的故事

程序與執行緒的故事

故事
1. 早期計算機和現代的普通計算器是類似的,只有輸入和輸出的功能。輸入一個指令,計算機計算後得出結果。
2. 顯然每次輸入一個指令得出結果是低效的,所以批處理系統誕生了。批作業系統可以把一系列的指令集儲存在儲存介質中,在執行任務是讀取指令集然後執行得到結果。
3. 顯然批處理系統一次只能執行一個任務,在讀取儲存介質中的資料時,CPU是空閒的。所以程序誕生了,用一個程序來執行一個任務。這樣就可以在批作業系統上實現多工,但早期CPU可能只有一個核心,所以設計了CPU排程演算法來按照一定規則執行各個任務。所以普通使用者使用時會感覺多工同時進行。
4. 由於程序是某一個任務指令集,所以只能序列執行,並且程序間通訊只能通過外部儲存介質等進行通訊。但很多情況下,某一個任務也需要並行執行,這種情況下共享程序資訊的執行緒誕生了。執行緒間可以通過管道,訊號等進行通訊。

區別 https://blog.csdn.net/swjtuwyp/article/details/51469552
1. 程序是作業系統分配資源的最小單位,執行緒是程式執行的最小單位(CPU排程執行緒)
2. 程序是執行緒的容器,一個程序由一個或多個執行緒組成,執行緒是一個程序中程式碼的不同執行路徑
3. 程序之間相互獨立,但同一程序下的各個執行緒之間共享程式的記憶體空間(包括程式碼段、資料集、堆等)及一些程序級的資源(如開啟檔案和訊號),某程序內的執行緒在其它程序不可見;
4. 排程和切換:執行緒上下文切換比程序上下文切換要快得多。