1. 程式人生 > 實用技巧 >程序和執行緒是什麼 關係與區別

程序和執行緒是什麼 關係與區別

程序

程序是程式的一次執行過程,是一個動態概念,是程式在執行過程中分配和管理資源的基本單位,每一個程序都有一個自己的地址空間,至少有 5 種基本狀態,它們是:初始態,執行態,等待狀態,就緒狀態,終止狀態。

執行緒

執行緒是CPU排程和分派的基本單位,它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源。

程序和執行緒的關係

執行緒是程序的一部分
一個執行緒只能屬於一個程序,而一個程序可以有多個執行緒,但至少有一個執行緒

程序和執行緒的區別

理解它們的差別,我從資源使用的角度出發。(所謂的資源就是計算機裡的中央處理器,記憶體,檔案,網路等等)

根本區別:程序是作業系統資源分配的基本單位,而執行緒是任務排程和執行的基本單位

開銷方面:每個程序都有獨立的程式碼和資料空間(程式上下文),程序之間切換開銷大;執行緒可以看做輕量級的程序,同一類執行緒共享程式碼和資料空間,每個執行緒都有自己獨立的執行棧和程式計數器(PC),執行緒之間切換的開銷小

所處環境:在作業系統中能同時執行多個程序(程式);而在同一個程序(程式)中有多個執行緒同時執行(通過CPU排程,在每個時間片中只有一個執行緒執行)

記憶體分配:系統為每個程序分配不同的記憶體空間;而對執行緒而言,除了CPU外,系統不會為執行緒分配記憶體(執行緒所使用的資源來自其所屬程序的資源),執行緒組之間只能共享資源

包含關係:執行緒是程序的一部分,所以執行緒也被稱為輕權程序或者輕量級程序