進程基礎知識

(1)進程與線程
(一)進程是程序在操做系統中的一次執行過程。系統進行資源分配和調度的一個獨立單位。
(二) 線程是進程的一個執行實體,是CPU調度與分配的基本單位,它是比進程更小的能獨立運行的基本單位。
(三) 一個進程能夠建立和撤銷多個進程,同一個進程中的多個線程能夠併發執行。golang

(2) 單線程與多線程
進程 ——》 一個進程 ——》單線程程序
進程——》 多個進程 ——》 多線程程序
(3) 併發與並行
(一) 多線程程序在一個核的CPU上運行,就是併發
(二) 多線程程序在多個核的CPU上運行,就是並行
多線程

併發在任一時刻只有一個在工做,並行是都在工做。
(4)協程與線程
(一) 協程:獨立的棧空間,共享堆空間,調度由用戶本身控制,本質上有點類型於用戶級線程,這些用戶級線程的調度也是本身實現的。
(二)線程:一個線程能夠跑多個協程,協程是輕量級線程。
(5)golang裏面goroutine 調度模型
併發

M: 操做系統裏面的線程
P:上下文
G: goroutine操作系統

能夠看出一個物理進程,能夠開啓多個協程。線程

相關文章
相關標籤/搜索