前言
最近一直在面試找實習,然後發現每次面試都會問進程和線程的區別,真是醉了,這裏特地做個總結,希望各位同學在被問到這個問題時都能發揮自如,早日拿到 offer ,共勉!
回答
- 根本區別:進程是操作系統進行資源分配的基本單位,線程是獨立調度的基本單位
- 地址空間:進程包含獨立的地址空間,線程沒有自己獨立的地址空間,它共享所屬進程的空間
- 開銷:進程之間的切換會有較大的開銷,線程之間的切換的開銷比較小;創建一個線程比進程開銷小
- 資源:系統在運行的時候會爲每個進程分配資源,而不會爲線程分配資源,線程所使用的資源來自其所屬進程的資源
- 通信:線程之間通信比進程之間通信更方便
- 包含關係:線程是一個輕量級進程,是進程的一部分
擴展:對於進程與線程之間的選擇?
適合使用線程的場景:
- 頻繁創建銷燬的場景
- 計算量大,切換頻繁的場景
- 需要速度的場景
適合使用進程的場景:需要穩定安全的場景