簡述 進程、線程、協程的區別 以及應用場景?


1.進程是計算器最小資源分配單位 .

2.線程是CPU調度的最小單位 .

3.進程切換需要的資源很最大,效率很低 .

4.線程切換需要的資源一般,效率一般(當然了在不考慮GIL的情況下) .

5.協程切換任務資源很小,效率高(協程本身並不存在,是程序員通過控制IO操作完成) .

6.多進程、多線程根據cpu核數不一樣可能是並行的,但是協程是在一個線程中 所以是並發.

 

進程:

一個運行的程序(代碼)就是一個進程,沒有運行的代碼叫程序,進程是系統資源分配的最小單位,進程擁有自己獨立的內存空間,所以進程間數據不共享,開銷大。

線程:

調度執行的最小單位,也叫執行路徑,不能獨立存在,依賴進程存在一個進程至少有一個線程,叫主線程,而多個線程共享內存(數據共享,共享全局變量),從而極大地提高了程序的運行效率。

協程:

是一種用戶態的輕量級線程,協程的調度完全由用戶控制。

協程擁有自己的寄存器上下文和棧。

協程調度切換時,將寄存器上下文和棧保存到其他地方,在切回來的時候,恢復先前保存的寄存器上下文和棧,直接操作棧則基本沒有內核切換的開銷,

可以不加鎖的訪問全局變量,所以上下文的切換非常快。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM