1. 程式人生 > >程序、執行緒、協程的區別

程序、執行緒、協程的區別

1.程序是系統進行資源分配和排程的一個獨立單位。有獨立的記憶體空間。程序間的切換開銷大,但相對穩定安全 2.執行緒是程序內的一個實體(執行單元),是CPU分配和排程的基本單位,它是比程序更小的能獨立執行的基本單位。執行緒只擁有一點資源(如程式計數器,一組暫存器和棧),同一程序下的執行緒共享程序所擁有的全部資源。執行緒間通訊主要通過共享記憶體,上下文切換很快,資源開銷較少,但相比程序不夠穩定容易丟失資料 3.協程yield,可以減少記憶體消耗

執行緒與程序的區別: 1. 地址空間:執行緒是程序內的一個執行單元,程序內至少有一個執行緒,它們共享程序的地址空間,而程序有自己獨立的地址空間 2. 資源擁有:程序是資源分配和擁有的單位,同一個程序內的執行緒共享程序的資源 3. 執行緒是處理器排程的基本單位,但程序不是 4. 二者均可併發執行 5. 每個獨立的執行緒有一個程式執行的入口、順序執行序列、程式的出口,但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制