什么是多線程 多線程詳細(xì)介紹
2022-10-10 10:22:25 閱讀(204)
相信很多沒有接觸計(jì)算機(jī)的人員都不知道多線程這一塊的相關(guān)內(nèi)容,很多人對這一個概念都不知道,下面小編就 給大家來詳細(xì)介紹一下什么是多線程 多線程詳細(xì)介紹這一塊的相關(guān)內(nèi)容,希望能幫助到大家。
什么是多線程
線程概念
線程:線程是進(jìn)程中的一條執(zhí)行流
以前我們學(xué)習(xí)進(jìn)程的時候,我們說進(jìn)程就是一個pcb,是程序動態(tài)運(yùn)行的描述,通過pcb可以實(shí)現(xiàn)操作系統(tǒng)對程序運(yùn)行的調(diào)度管理。
在最早時候,進(jìn)程是一個pcb,操作系統(tǒng)通過pcb實(shí)現(xiàn)程序的運(yùn)行調(diào)度管理;然而學(xué)習(xí)多線程,因?yàn)榫€程是進(jìn)程中的一條執(zhí)行流,linux下通過pcb實(shí)現(xiàn)的,因此linux下的pcb實(shí)際上是一個進(jìn)程,并且這些pcb共用同一個虛擬地址空間,這些pcb更加輕量化,因此linux下的線程也被稱為輕量級進(jìn)程
線程和進(jìn)程關(guān)系
linux下的進(jìn)程其實(shí)是一個線程組,一個進(jìn)程中可以有多個線程(多個pcb),線程是進(jìn)程中的一條執(zhí)行流,類似于進(jìn)程就是一個工廠,線程就是工廠中干活的人(Linux下干活的就是pcb)
在linux中,pcb就是調(diào)度程序運(yùn)行的描述,一個pcb就可以調(diào)度一段程序的運(yùn)行;
線程是進(jìn)程中的一條執(zhí)行流,而這個執(zhí)行流Linux下就是通過pcb實(shí)現(xiàn)的,因此線程是一個pcb;并且這些pcb共享了進(jìn)程中的大部分資源,因此相較于傳統(tǒng)pcb更加輕量化。
進(jìn)程:是一個程序動態(tài)的運(yùn)行,其實(shí)就是一個程序運(yùn)行的描述-pcb
線程:是進(jìn)程中的一條執(zhí)行流,執(zhí)行一個程序中的某段代碼
在linux操作系統(tǒng)內(nèi)核中,其實(shí)沒有線程的概念,只有輕量級進(jìn)程的概念
一個進(jìn)程中至少會有一個線程
根據(jù)學(xué)習(xí)階段的不同,對pcb有不同的理解
第一階段:pcb是進(jìn)程,用于調(diào)度一個程序運(yùn)行;
第二階段:pcb是線程,是輕量級進(jìn)程(就是為了跟印象中的傳統(tǒng)進(jìn)程加以區(qū)分),因?yàn)榫€程是運(yùn)行中程序的一條執(zhí)行流,linux下通過pcb實(shí)現(xiàn)這個執(zhí)行流,并且共用同一份運(yùn)行資源
進(jìn)程是操作系統(tǒng)資源分配的基本單位(操作系統(tǒng)會為一個程序的運(yùn)行分配所需的所有資源)
線程是cpu調(diào)度的基本單位;
線程之間的獨(dú)有與共享
獨(dú)有:標(biāo)識符,寄存器,棧,信號屏蔽字,errno
共享:虛擬地址空間(代碼段/數(shù)據(jù)段),文件描述符表,信號處理方式,用戶ID/組ID/工作路徑
為什么信號是先注銷,再處理?:信號是針對整個進(jìn)程通知時間進(jìn)行處理的,但是一個信號只需要被處理一次就夠了,然而一個進(jìn)程有可能會有多個執(zhí)行流,到底是誰處理這個事件(誰拿到時間片,誰能處理誰處理),有的線程不希望操作被信號被打斷,就可以獨(dú)立屏蔽這個信號----信號屏蔽字獨(dú)有原因
使用vfork創(chuàng)建一個子進(jìn)程;父子進(jìn)程共用同一個虛擬地址空間,但是父進(jìn)程會阻塞直到子進(jìn)程exit或者程序替換;
多線程,多個pcb作為獨(dú)立執(zhí)行流肯定是要同時運(yùn)行,如何做到不會調(diào)用棧混亂----棧獨(dú)有的原因
errno:系統(tǒng)調(diào)用完畢后重置的一個全局變量
多線程/多進(jìn)程進(jìn)行多任務(wù)處理的優(yōu)缺點(diǎn)分析
多線程優(yōu)點(diǎn):
線程間的通信更加靈活方便
線程的創(chuàng)建與銷毀成本更低
同一個進(jìn)程中的線程間調(diào)度成本更低
多進(jìn)程的優(yōu)點(diǎn):
多進(jìn)程的健壯性,穩(wěn)定性更高(異常以及一些系統(tǒng)調(diào)用exit直接針對整個進(jìn)程有效)
共同的優(yōu)點(diǎn):提高程序中的處理效率
IO密集型程序
CPU密集型程序
上面就是關(guān)于什么是多線程 多線程詳細(xì)介紹的全部內(nèi)容介紹,希望上面的內(nèi)容能幫助到大家,上面的這些介紹還是能給大家普及這一塊的相關(guān)知識。
未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明出處- 本文關(guān)鍵詞:
- 電腦軟件