關(guān)系:線程是進(jìn)程的基本執(zhí)行單元,一個(gè)進(jìn)程的所有任務(wù)都在線程中執(zhí)行;進(jìn)程要想執(zhí)行任務(wù),必須得有線程。區(qū)別:1、同一進(jìn)程的線程共享本進(jìn)程的地址空間,而進(jìn)程之間則是獨(dú)立的地址空間;2、同一進(jìn)程內(nèi)的線程共享本進(jìn)程的資源,而進(jìn)程間的資源是獨(dú)立的。
本教程操作環(huán)境:windows10系統(tǒng)、Dell G3電腦。
線程和進(jìn)程的關(guān)系
線程定義
線程是進(jìn)程的基本執(zhí)行單元,一個(gè)進(jìn)程的所有任務(wù)都在線程中執(zhí)行
進(jìn)程要想執(zhí)行任務(wù),必須得有線程,進(jìn)程至少要有一條線程
程序啟動(dòng)會(huì)默認(rèn)開啟一條線程,這條線程被稱為主線程或 UI 線程
進(jìn)程定義
進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序
每個(gè)進(jìn)程之間是獨(dú)立的,每個(gè)進(jìn)程均運(yùn)行在其專用的且受保護(hù)的內(nèi)存
進(jìn)程與線程的區(qū)別
地址空間:同一進(jìn)程的線程共享本進(jìn)程的地址空間,而進(jìn)程之間則是獨(dú)立的地址空間。
資源擁有:同一進(jìn)程內(nèi)的線程共享本進(jìn)程的資源(如內(nèi)存、I/O、cpu等),但是進(jìn)程之間的資源是獨(dú)立的。
一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對其他進(jìn)程產(chǎn)生影響,但是一個(gè)線程崩潰整個(gè)進(jìn)程都死掉。所以多進(jìn)程要比多線程健壯。
進(jìn)程切換時(shí),消耗的資源大,效率高。所以涉及到頻繁的切換時(shí),使用線程要好于進(jìn)程。同樣如果要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程不能用進(jìn)程
執(zhí)行過程:每個(gè)獨(dú)立的進(jìn)程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序入口。但是線程不能獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
線程是處理器調(diào)度的基本單位,但是進(jìn)程不是。
擴(kuò)展資料:多線程的意義
優(yōu)點(diǎn)
- 能適當(dāng)提高程序的執(zhí)行效率
- 能適當(dāng)提高資源的利用率(CPU,內(nèi)存)
- 線程上的任務(wù)執(zhí)行完成后,線程會(huì)自動(dòng)銷毀
缺點(diǎn)
- 開啟線程需要占用一定的內(nèi)存空間(默認(rèn)情況下,每一個(gè)線程都占 512 KB)
- 如果開啟大量的線程,會(huì)占用大量的內(nèi)存空間,降低程序的性能
- 線程越多,CPU 在調(diào)用線程上的開銷就越大
- 程序設(shè)計(jì)更加復(fù)雜,比如線程間的通信、多線程的數(shù)據(jù)共享