更新時(shí)間:2021年07月20日16時(shí)26分 來(lái)源:傳智教育 瀏覽次數(shù):
線(xiàn)程是系統(tǒng)進(jìn)行運(yùn)算調(diào)度的最小單位,也被稱(chēng)為輕量級(jí)進(jìn)程,它包含在進(jìn)程之中,是進(jìn)程的實(shí)際運(yùn)作單位。進(jìn)程中可以包含多個(gè)線(xiàn)程,每個(gè)線(xiàn)程是進(jìn)程中單一順序的控制流,可以并行執(zhí)行不同的任務(wù)。
線(xiàn)程由線(xiàn)程ID、當(dāng)前指令指針(PC)、寄存器集合和堆棧組成,它不能獨(dú)立擁有系統(tǒng)資源,但它可與同屬一個(gè)進(jìn)程的其它線(xiàn)程共享該進(jìn)程所擁有的全部資源。
線(xiàn)程一般可分為以下幾種類(lèi)型:
主線(xiàn)程:程序啟動(dòng)時(shí),操作系統(tǒng)會(huì)創(chuàng)建一個(gè)進(jìn)程,與此同時(shí)會(huì)立即運(yùn)行一個(gè)線(xiàn)程,該線(xiàn)程通常被稱(chēng)為主線(xiàn)程。主線(xiàn)程的作用主要有兩個(gè),一個(gè)是產(chǎn)生其他子線(xiàn)程,另一個(gè)是最后執(zhí)行各種關(guān)閉操作,例如文件的關(guān)閉。
子線(xiàn)程:程序中創(chuàng)建的其它線(xiàn)程。
守護(hù)線(xiàn)程(后臺(tái)線(xiàn)程):守護(hù)線(xiàn)程是在后臺(tái)為其它線(xiàn)程提供服務(wù)的線(xiàn)程,它獨(dú)立于程序,不會(huì)因程序的終止而結(jié)束。當(dāng)進(jìn)程中只剩下守護(hù)線(xiàn)程時(shí),進(jìn)程直接退出。
前臺(tái)線(xiàn)程:相對(duì)于守護(hù)線(xiàn)程的其它線(xiàn)程稱(chēng)為前臺(tái)線(xiàn)程。
線(xiàn)程與進(jìn)程相似,也具有五個(gè)狀態(tài),分別是新建態(tài)、就緒態(tài)、運(yùn)行態(tài)、阻塞態(tài)和消亡態(tài),這些狀態(tài)之間的轉(zhuǎn)換如圖1所示。
圖1 線(xiàn)程狀態(tài)的轉(zhuǎn)換
由圖1可知,線(xiàn)程因某些條件發(fā)生時(shí)會(huì)由運(yùn)行態(tài)轉(zhuǎn)換為阻塞態(tài),這些條件可能為以下任意一種:
(1) 線(xiàn)程主動(dòng)調(diào)用sleep()函數(shù)進(jìn)入休眠狀態(tài);
(2) 線(xiàn)程試圖獲取同步鎖,但是該鎖正被其它線(xiàn)程持有;
(3) 線(xiàn)程等待一些I/O操作完成;
(4) 線(xiàn)程等待某個(gè)條件觸發(fā)。
怎樣保障多線(xiàn)程同步數(shù)據(jù)的安全?
北京校區(qū)