查ICP網:全新的綜合網站備案信息查詢網
Copyright ? 2008-2028 www.mshuangcha.com [ 查icp] All Rights Reserved.
線程與進程的區別和聯系是什么?
線程定義
線程是進程的基本執行單元,一個進程的所有任務都在線程中執行
進程要想執行任務,必須得有線程,進程至少要有一條線程
程序啟動會默認開啟一條線程,這條線程被稱為主線程或 UI 線程
進程定義
進程是指在系統中正在運行的一個應用程序
每個進程之間是獨立的,每個進程均運行在其專用的且受保護的內存
進程與線程的區別
地址空間:同一進程的線程共享本進程的地址空間,而進程之間則是獨立的地址空間。
資源擁有:同一進程內的線程共享本進程的資源(如內存、I/O、cpu等),但是進程之間的資源是獨立的。
一個進程崩潰后,在保護模式下不會對其他進程產生影響,但是一個線程崩潰整個進程都死掉。所以多進程要比多線程健壯。
進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好于進程。同樣如果要求同時進行并且又要共享某些變量的并發操作,只能用線程不能用進程
執行過程:每個獨立的進程有一個程序運行的入口、順序執行序列和程序入口。但是線程不能獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
線程是處理器調度的基本單位,但是進程不是。
多線程的意義
優點
能適當提高程序的執行效率能適當提高資源的利用率(CPU,內存)線程上的任務執行完成后,線程會自動銷毀
缺點
開啟線程需要占用一定的內存空間(默認情況下,每一個線程都占 512 KB)如果開啟大量的線程,會占用大量的內存空間,降低程序的性能線程越多,CPU 在調用線程上的開銷就越大程序設計更加復雜,比如線程間的通信、多線程的數據共享