做性能測試的必備知識系列,可以看下面鏈接的文章哦
https://www.cnblogs.com/poloyy/category/1806772.html
進程
- 一個正在運行的應用程序
- 比如,在 Window下,一個運行中的 exe 就是一個進程(如下圖)

深挖進程

- 一個進程可以有很多個線程,但至少有一個線程
- 內存是邏輯內存
- 文件/網絡句柄就是資源文件
進程有多個線程的場景類比
- 打開一個 qq,就是一個進程
- 很多個聊天框,就是很多個線程在同時運行中
什么是多進程
- 同時運行多個應用程序
- 當你打開電腦,就已經是多進程模式了,同時跑着多個不同的程序
線程
進程中的一個任務調度和執行的基本單位
深挖線程

- PC:program contact,存放的是當前下一條執行指令的地址
- TLS:安全傳輸層協議
- PC 指向內存:相當於操作系統運行的是一個個線程,進程只是容器,指令本身放在內存;同一進程中的線程共享相同的地址空間,因此可以讀寫同樣的數據結構和變量,便於通信
什么是多線程
- 在同一個進程中同時運行多個任務
- 比如:在 qq 和多個人、群同時聊天
進程和線程的區別
從幾個層面去分析
內存
- 進程:不共享內存
- 線程:共享進程的內存空間
作用
- 進程:是 CPU 資源分配的最小單位,它主要用來就是資源的分配
- 線程:是 CPU 調度執行的最小單位,它主要用來系統調度
資源
進程共享系統的文件、網絡資源,而線程會共享進程的資源文件
獨立
- 進程:獨立存在,有自己的內存地址
- 線程:不可以獨立,必須依賴進程而存在
開銷
- 進程:需要分配內存,開銷較大
- 線程:只需要分配棧和一個 PC,開銷比較小
通信
- 進程:進程間通信比較復雜,因為它的數據空間獨立性,需要通過操作系統,基於 socket 的進程間的通信機制
- 線程:線程間的通信由於多線程共享內存地址空間和數據空間,可直接通信,不必通過操作系統(內核的調度),比較簡單
影響關系
- 進程:進程崩潰之后,在系統保護模式下,不會對其他進程產生影響
- 線程:一個線程崩潰之后,整個進程都會死掉
- 總結:多進程比多線程要健壯
