真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux——線程概念及私有數(shù)據(jù)和優(yōu)缺點(diǎn)-創(chuàng)新互聯(lián)

目錄

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),襄城企業(yè)網(wǎng)站建設(shè),襄城品牌網(wǎng)站建設(shè),網(wǎng)站定制,襄城網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,襄城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

一.什么是線程

二.線程私有的數(shù)據(jù)

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

四.線程的缺點(diǎn)

五.線程與進(jìn)程對(duì)比


一.什么是線程

線程是在進(jìn)程內(nèi)部運(yùn)行,一個(gè)進(jìn)程可以有多個(gè)線程。

打個(gè)比方,假如人是一個(gè)進(jìn)程,那么走路、思考、吃飯、說(shuō)話作為不同的線程。一個(gè)進(jìn)程能有多個(gè)線程同時(shí)運(yùn)行,就好比一個(gè)人在走路時(shí)還可以思考、說(shuō)話、吃飯一樣。

可以說(shuō),線程就是進(jìn)程的“四肢”,是進(jìn)程運(yùn)行的基本單位,是CPU調(diào)度的基本單位。

畫(huà)個(gè)草圖如下:

總結(jié)而言,在一個(gè)程序里的一個(gè)執(zhí)行路線就叫做線程,且一個(gè)進(jìn)程至少要有一個(gè)執(zhí)行線程。

線程與進(jìn)程共享虛擬地址空間、頁(yè)表等內(nèi)核數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)和代碼。
線程的數(shù)據(jù)結(jié)構(gòu)理論上與進(jìn)程的不同,但基于線程和進(jìn)程的相似性,linux的線程數(shù)據(jù)結(jié)構(gòu)依舊采用
task_struct結(jié)構(gòu)體,與進(jìn)程的一致。但是其他的操作系統(tǒng)線程有專屬的結(jié)構(gòu),與進(jìn)程的不同。也就是說(shuō),linux沒(méi)有真正意義上的線程結(jié)構(gòu),而是采用進(jìn)程的task_struct結(jié)構(gòu)體模擬的線程。

即便線程與進(jìn)程都采用task_struct結(jié)構(gòu)體,但是內(nèi)核數(shù)據(jù)結(jié)構(gòu)依舊屬于進(jìn)程,線程只是與進(jìn)程共享。
換句話說(shuō),進(jìn)程 = 多個(gè)線程(執(zhí)行流)+ 內(nèi)核數(shù)據(jù)結(jié)構(gòu) + 數(shù)據(jù) + 代碼。
而task_struct本質(zhì)就是進(jìn)程內(nèi)部的一個(gè)執(zhí)行流。
對(duì)于CPU而言,本質(zhì)上只是調(diào)度task_struct,而不會(huì)區(qū)分進(jìn)程還是線程。

圖示如下:

二.線程私有數(shù)據(jù)及區(qū)域

所有線程共享進(jìn)程的內(nèi)核數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)及代碼,但是每個(gè)線程也有自己私有的數(shù)據(jù)。

比如線程id、寄存器和棧,還有errno、信號(hào)屏蔽字(block位圖)、調(diào)度優(yōu)先級(jí)。

linux的線程數(shù)據(jù)創(chuàng)建在共享區(qū)中,因此,線程結(jié)構(gòu)在共享區(qū)中。

linux使用pthread庫(kù)來(lái)創(chuàng)建及管理線程,而pthread作為動(dòng)態(tài)庫(kù)需要加載到共享區(qū),進(jìn)而線程創(chuàng)建在共享區(qū)中。

線程棧、局部存儲(chǔ)數(shù)據(jù)(__pthread類型變量)及線程id由pthread庫(kù)函數(shù)創(chuàng)建的struct pthread結(jié)構(gòu)體管理。該結(jié)構(gòu)體在共享區(qū),因此,線程的棧也在共享區(qū)中。

值得注意的是:

①主線程使用虛擬地址空間中的棧區(qū),只有其他線程使用共享區(qū)中分配的棧區(qū)。

②線程id(pthread_self()函數(shù)返回值)本質(zhì)是共享區(qū)pthread庫(kù)所分配給該線程空間的起始地址,即id本質(zhì)是一個(gè)地址。

圖示如下:

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

①創(chuàng)建線程的代價(jià)比創(chuàng)建進(jìn)程小。創(chuàng)建線程只用創(chuàng)建task_struct結(jié)構(gòu)體,而進(jìn)程還有相關(guān)內(nèi)核數(shù)據(jù)結(jié)構(gòu),加載數(shù)據(jù)和代碼。

②線程切換效率比進(jìn)程切換高。線程占用系統(tǒng)資源少,切換更高效。線程切換時(shí)不會(huì)清除緩存數(shù)據(jù),進(jìn)程切換會(huì)清除緩存。

③線程可以充分利用CPU多核心的優(yōu)勢(shì)(多線程)??梢酝瑫r(shí)執(zhí)行不同的任務(wù),使得多個(gè)任務(wù)能夠并發(fā)進(jìn)行。

④多線程可以提高計(jì)算密集型和IO密集型應(yīng)用的效率。計(jì)算密集型應(yīng)用可以將計(jì)算分給多個(gè)線程處理,IO密集型應(yīng)用可以使用多線程同時(shí)進(jìn)行不同的IO操作。

四.線程的缺點(diǎn)

①多線程的健壯性差。多線程之間沒(méi)有數(shù)據(jù)保護(hù),可能存在因?yàn)榫€程執(zhí)行順序問(wèn)題導(dǎo)致的數(shù)據(jù)錯(cuò)誤。

②缺乏訪問(wèn)控制。線程訪問(wèn)某些系統(tǒng)函數(shù)可能會(huì)對(duì)整個(gè)進(jìn)程造成影響。

③多線程程序調(diào)試難度大。多線程代碼的調(diào)試比單線程困難許多。

五.線程與進(jìn)程對(duì)比

①一個(gè)進(jìn)程可以有多個(gè)線程,且只少有一個(gè)線程。

②進(jìn)程擁有內(nèi)核數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)及代碼,線程只有使用權(quán)和必不可少的私有數(shù)據(jù)如寄存器和棧。

③線程執(zhí)行效率通常更高,但不安全。

④一個(gè)線程異常,整個(gè)進(jìn)程異常。


如有錯(cuò)誤,敬請(qǐng)斧正

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:Linux——線程概念及私有數(shù)據(jù)和優(yōu)缺點(diǎn)-創(chuàng)新互聯(lián)
URL標(biāo)題:http://weahome.cn/article/dcjseg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部