進程與線程的區別
1.進程是資源分配最小單位,線程是程序執行的最小單位;
2..進程有自己獨立的地址空間,每啟動一個進程,系統都會為其分配地址空間,建立數據表來維護代碼段、堆棧段和數據段,線程沒有獨立的地址空間,它使用相同的地址空間共享數據;
3.CPU切換一個線程比切換進程花費小;
4.創建一個線程比進程開銷小;
5.線程占用的資源要?進程少很多。
6.線程之間通信更方便,同一個進程下,線程共享全局變量,靜態變量等數據,進程之間的通信需要以通信的方式(IPC)進行;(但多線程程序處理好同步與互斥是個難點)
7..多進程程序更安全,生命力更強,一個進程死掉不會對另一個進程造成影響(源于有獨立的地址空間),多線程程序更不易維護,一個線程死掉,整個進程就死掉了(因為共享地址空間);
8.進程對資源保護要求高,開銷大,效率相對較低,線程資源保護要求不高,但開銷小,效率高,可頻繁切換;
?