1. 程式人生 > 實用技巧 >簡述 程序、執行緒、協程的區別 以及應用場景--記錄

簡述 程序、執行緒、協程的區別 以及應用場景--記錄

執行緒是指程序內的一個執行單元,
# 程序
程序擁有自己獨立的堆和棧,既不共享堆,亦不共享棧,程序由作業系統排程。
# 執行緒
執行緒擁有自己獨立的棧和共享的堆,共享堆,不共享棧,執行緒亦由作業系統排程
# 協程和執行緒
協程避免了無意義的排程,由此可以提高效能;但同時協程也失去了執行緒使用多CPU的能力

程序與執行緒的區別
(1)地址空間:執行緒是程序內的一個執行單位,程序內至少有一個執行緒,他們共享程序的地址空間,而程序有自己獨立的地址空間
(2)資源擁有:程序是資源分配和擁有的單位,同一個程序內執行緒共享程序的資源
(3)執行緒是處理器排程的基本單位,但程序不是
(4)二者均可併發執行
(5)每個獨立的執行緒有一個程式執行的入口

協程與執行緒
(1)一個執行緒可以有多個協程,一個程序也可以單獨擁有多個協程,這樣Python中則能使用多核CPU
(2)執行緒程序都是同步機制,而協程是非同步
(3)協程能保留上一次呼叫時的狀態