這裏來區分一下線程和進程
進程:
- 每個進程都有獨立的代碼和數據空間(進程上下文)
- 進程間的切換會有較大的開銷
- 一個進程包含1--n個線程。
- 進程是資源分配的最小單位
線程:
- 同一類線程共享代碼和數據空間(因爲多線程組成進程,如果進程是資源分配的最小單位,那麼線程之間彼此共享資源就很好理解)
- 每個線程有獨立的運行棧和程序計數器(PC)
- 線程切換開銷小。
- 線程是cpu調度的最小單位(衆所周知,線程在start後,不一定那是run,什麼時候run取決於系統的調用)
線程和進程一樣分爲五個階段:創建、就緒、運行、阻塞、終止。
多進程是指操作系統能同時運行多個任務(程序)。多線程是指在同一程序中有多個順序流在執行。
例子:
下面是我類比兩個概念和生活中的實例,進行的舉例,歡迎指出錯誤!!
進程可以想象成做一件事。比如有一個項目組,現在有兩個項目要開發(一個online store的網站、一個教育評估系統)
開發網站或者開發系統是兩件單獨獨立的事情,把整個項目組想象成計算機的話,那麼這兩件事就可以看成是要執行的兩個進程。
在online store的網站中, 肯定有很多的個模塊需要被開發,比如登錄功能和搜索功能。所以開發登錄功能就是可以看成是一個線程。而如果現在項目經理只分配了一個開發人員來開發這 兩個功能,那麼這個開發人員就是這兩個線程的共享資源。