## 進程(Process)
- windows的任務管理器可以看到一個個的進程
- 進程是程序的實體(就跟class是對象的實體一樣,一個意思)
- 是系統資源分配跟調度的基本單位
- 進程是線程的容器
- 進程中最少有一個線程
> 進程是一個實體。每一個進程都有它自己的地址空間,一般情況下,包括文本區域(text region)、數據區域(data region)和堆棧(stack region)。文本區域存儲處理器執行的代碼;數據區域存儲變量和進程執行期間使用的動態分配的內存;堆棧區域存儲著活動過程調用的指令和本地變量。**第二**,進程是一個“執行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時,它才能成為一個活動的實體,我們稱其為進程。
## 線程(Lightweight Process)
- 線程可以利用進程了所擁有的資源 ( Nodejs是單線程的)
- 線程是進程中的一個實體
- 系統把進程作為資源分配的基本單位,把線程作為資源調度的基本單位
- 一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以并發執行
### 多線程
> 多線程是為了同步完成多項任務, 不是為了提高運行效率,而是為了提高資源使用率來提高
> 系統效率,線程是在同一時間需要完成多項任務的時候實現的。
## 進程跟線程的區別
- 一個進程掛了對其它進程沒有影響
- 一個線程掛了這個進程也就掛了( nodejs 中有沒捕獲的異常時,進程就會掛)
- 多進程的程序要比多線程的程序健壯 (但在進程切換時,耗費資源較大,效率要差一些)
- 對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程