linux中線程是什么意思

這篇文章主要為大家展示了“l(fā)inux中線程是什么意思”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux中線程是什么意思”這篇文章吧。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括石棉網(wǎng)站建設(shè)、石棉網(wǎng)站制作、石棉網(wǎng)頁(yè)制作以及石棉網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,石棉網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到石棉省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

在linux中,線程(thread)指的是程序內(nèi)部的一個(gè)執(zhí)行路線,即一個(gè)進(jìn)程內(nèi)部的控制序列,一切進(jìn)程至少都有一個(gè)執(zhí)行線程。線程是程序執(zhí)行的最小單位,線程共享進(jìn)程數(shù)據(jù),但也有自己的一部分?jǐn)?shù)據(jù)。

本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。

Linux 線程的概念

什么是線程?

  • 在一個(gè)程序里的一個(gè)執(zhí)行路線就叫做線程(thread)。更準(zhǔn)確的定義是:線程是“一個(gè)進(jìn)程內(nèi)部的控制序列”。

  • 一切進(jìn)程至少都有一個(gè)執(zhí)行線程。

進(jìn)程與線程

  • 進(jìn)程是資源分配與競(jìng)爭(zhēng)的基本單位

  • 線程是程序執(zhí)行的最小單位

  • 線程共享進(jìn)程數(shù)據(jù),但也有自己的一部分?jǐn)?shù)據(jù)

  • 線程ID

  • 一組寄存器:IP,PSW,堆棧指針

  • errno

  • 信號(hào)狀態(tài)

  • 優(yōu)先級(jí)

linux中線程是什么意思

fork和創(chuàng)建新線程的區(qū)別

  • 當(dāng)一個(gè)進(jìn)程執(zhí)行一個(gè)fork調(diào)用的時(shí)候,會(huì)創(chuàng)建出進(jìn)程的一個(gè)新拷貝,新進(jìn)程將擁有它自己的變量和它自己的PID。這個(gè)新進(jìn)程的運(yùn)行時(shí)間是獨(dú)立的,它在執(zhí)行時(shí)幾乎完全獨(dú)立于創(chuàng)建它的進(jìn)程。

  • 在進(jìn)程里面創(chuàng)建一個(gè)新線程的時(shí)候,新的執(zhí)行進(jìn)程會(huì)擁有自己的堆棧(因此也就有自己的局部變量),但要與他的創(chuàng)建者共享全局變量、文件描述符、信號(hào)處理器和當(dāng)前工作目錄狀態(tài)。

線程的優(yōu)點(diǎn)

  • 創(chuàng)建一個(gè)新線程的代價(jià)要比創(chuàng)建一個(gè)新進(jìn)程小得多

  • 與進(jìn)程之間的切換相比,線程之間的切換需要操作系統(tǒng)做的工作少得多

  • 線程占用的資源要比進(jìn)程少得多

  • 能充分利用多處理器的可并行數(shù)量

  • 在等待慢速I/O操作結(jié)束的同時(shí),程序可執(zhí)行其他的計(jì)算任務(wù)

  • 計(jì)算密集型應(yīng)用,為了能在多處理器系統(tǒng)上運(yùn)行,將計(jì)算分解到多個(gè)線程中實(shí)現(xiàn)

  • I/O密集型應(yīng)用,為了提高系統(tǒng),將I/O操作重疊。線程可以同時(shí)等待不同的I/O操作

線程的缺點(diǎn)

  • 性能損失

  • 一個(gè)很少被外部事件阻塞的計(jì)算密集型線程往往無(wú)法與其他線程共享同一個(gè)處理器。如果計(jì)算密集型線程的數(shù)量比可用的處理器多,那么可能會(huì)有較大的性能損失,這里的性能損失指的是增加了額外的同步和調(diào)度開銷,而可用的資源不變。

  • 健壯性降低

  • 編寫多線程需要更全面更深入的考慮,在一個(gè)多線程程序里,因時(shí)間分配上的細(xì)微偏差或者因共享了不該共享的變量而造成不良的可能性是很大的,換句話說(shuō)線程之間是缺乏保護(hù)的。

  • 缺乏訪問(wèn)控制

  • 進(jìn)程是訪問(wèn)控制的基本粒度,在一個(gè)線程中調(diào)用某些OS函數(shù)會(huì)對(duì)整個(gè)進(jìn)程造成影響。

  • 編程難度提高

  • 編寫與調(diào)試一個(gè)多線程比單線程程序困難得多

線程調(diào)度競(jìng)爭(zhēng)范圍

  • 操作系統(tǒng)提供了各個(gè)模型,用來(lái)調(diào)度應(yīng)用程序創(chuàng)建的線程。這些模型時(shí)間的主要不同是:在競(jìng)爭(zhēng)系統(tǒng)資源(特別是CPU時(shí)間)時(shí),線程調(diào)度競(jìng)爭(zhēng)范圍(thread-scheduling contention scope)不一樣

  • 進(jìn)程競(jìng)爭(zhēng)范圍(Process contention scope):各個(gè)線程在同一個(gè)進(jìn)程競(jìng)爭(zhēng)“被調(diào)度的CPU時(shí)間”(但不直接和其他進(jìn)程中的線程競(jìng)爭(zhēng))。

  • 系統(tǒng)競(jìng)爭(zhēng)范圍(System contention scope):線程直接和”系統(tǒng)范圍“內(nèi)的其他線程競(jìng)爭(zhēng)。

以上是“l(fā)inux中線程是什么意思”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

名稱欄目:linux中線程是什么意思
轉(zhuǎn)載來(lái)源:http://muchs.cn/article0/ghieio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、全網(wǎng)營(yíng)銷推廣、網(wǎng)站排名、做網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站