内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式

這篇文章主要介紹“怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式”,在日常操作中,相信很多人在怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)建站從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元鹿城做網(wǎng)站,已為上家服務(wù),為鹿城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

在多核編程中,鎖競(jìng)爭(zhēng)導(dǎo)致的CPU饑餓現(xiàn)象是引起多核CPU性能無法發(fā)揮的最重要原因之一,在多核編程中的鎖競(jìng)爭(zhēng)難題一文中已經(jīng)講過鎖競(jìng)爭(zhēng)對(duì)性能的影響,如何消解鎖競(jìng)爭(zhēng)導(dǎo)致的CPU饑餓現(xiàn)象成了迫切需要解決的問題。

目 前業(yè)界發(fā)展的無鎖編程技術(shù)可以有效降低鎖競(jìng)爭(zhēng)引起的性能下降問題,無鎖編程主要是采用原子操作來替代鎖,只存在原子操作競(jìng)爭(zhēng)問題,由于原子操作只是一條指 令,速度非常快,因此可以近似地看成是無鎖競(jìng)爭(zhēng)的,除非原子操作非常頻繁。無鎖編程難度非常高,從目前的情況來看,普通程序員要親自進(jìn)行無鎖編程是不現(xiàn)實(shí) 的事情。并且目前只有少數(shù)數(shù)據(jù)結(jié)構(gòu)可以實(shí)現(xiàn)無鎖編程,從目前商用的無鎖編程庫(kù)NOBLE來看,只提供了隊(duì)列、棧、鏈表、詞典、帶引用計(jì)數(shù)的垃圾回收內(nèi)存管理等少數(shù)幾種無鎖編程結(jié)構(gòu),只能解決部分鎖競(jìng)爭(zhēng)問題,這個(gè)庫(kù)的售價(jià)高昂,以下是從NOBLE的網(wǎng)站上拷貝下來的售價(jià)。

$1395 USD, NOBLE Professional Edition, Evaluation License 1 Months, Windows

$3295 USD, NOBLE Professional Edition, Evaluation License 3 Months, Windows

看了這個(gè)售價(jià),估計(jì)國(guó)內(nèi)也沒有多少公司愿意出這么高昂的價(jià)錢的購(gòu)買這個(gè)一個(gè)功能有限,且使用起來不像以前的使用鎖的庫(kù)那么方便的庫(kù)。

既然沒有無鎖編程的免費(fèi)午餐可以享用,那么使用鎖來編程的話,可不可以避免鎖競(jìng)爭(zhēng)導(dǎo)致的CPU饑餓現(xiàn)象呢?答案是可以的,這就是文章標(biāo)題中的線程分組競(jìng)爭(zhēng)模式,它使用鎖來進(jìn)行保護(hù)共享數(shù)據(jù),但是又避免了鎖競(jìng)爭(zhēng)時(shí)出現(xiàn)CPU饑餓現(xiàn)象。其實(shí)這個(gè)模式在業(yè)界已經(jīng)有了很成功的實(shí)踐,那就是隊(duì)列池。當(dāng)然這個(gè)模式的應(yīng)用不僅僅限于隊(duì)列池,也可以用到很多其他的滿足一定條件的共享數(shù)據(jù)保護(hù)上。

先看一下線程分組競(jìng)爭(zhēng)模式的基本思想,所謂線程分組競(jìng)爭(zhēng)就是將線程分成若干個(gè)組,每個(gè)組的線程間存在鎖競(jìng)爭(zhēng),但是不同組之間的線程不存在鎖競(jìng)爭(zhēng)。下圖以添加操作和刪除操作作為示例來顯示2個(gè)分組線程競(jìng)爭(zhēng)的情況:

怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式

圖中顯示了兩個(gè)分組的線程競(jìng)爭(zhēng)情況,共有四個(gè)線程分成兩組進(jìn)行競(jìng)爭(zhēng),添加操作線程1和刪除操作線程1之間存在鎖競(jìng)爭(zhēng)情況,添加操作線程2和刪除操作線程2之間存在鎖競(jìng)爭(zhēng)情況,但是添加操作線程1(或刪除操作線程1)和添加操作線程2和刪除操作線程2之間不存在鎖競(jìng)爭(zhēng)。

在這種分組鎖競(jìng)爭(zhēng)模式下,任意一組線程中,至少有一個(gè)線程在執(zhí)行,因此如果有N組線程的話,那么至少有N個(gè)線程在執(zhí)行,如果N大于等于CPU的核數(shù),那么任意一個(gè)CPU     核上都有線程一直在運(yùn)行,可以充分保證CPU不會(huì)產(chǎn)生饑餓現(xiàn)象。

并不是任意共享數(shù)據(jù)都可以采用線程分組競(jìng)爭(zhēng)的形式來進(jìn)行訪問,共享數(shù)據(jù)必須可以分成若干個(gè)獨(dú)立的子數(shù)據(jù),每次操作只需要操作某個(gè)子數(shù)據(jù),一次操作中不需要操作多個(gè)子數(shù)據(jù)。

線程分組競(jìng)爭(zhēng)模式和無鎖編程相比,有著很大的優(yōu)勢(shì),最重要的優(yōu)勢(shì)有兩點(diǎn):

一、使用有鎖編程,編程難度很小,易于為普通程序員掌握。

二、并發(fā)性比無鎖編程更好,無鎖編程中存在原子操作競(jìng)爭(zhēng)問題,其競(jìng)爭(zhēng)激烈程度會(huì)隨CPU核數(shù)增加而增加,特別是當(dāng)原子操作包含在大循環(huán)中時(shí),原子操作競(jìng)爭(zhēng)最壞情況下會(huì)使性能降到和單核CPU一樣。而線程分組模式中各個(gè)CPU核完全是并行運(yùn)行的,CPU核相互間不存在競(jìng)爭(zhēng)問題,因此CPU核數(shù)增加不會(huì)造成任何影響。

以上講的是線程分組競(jìng)爭(zhēng)模式的一種情況,實(shí)際情況中很多情況和這種模式并不完全符合,因此線程分組模式存在一些變種以適應(yīng)更多的實(shí)際情況。下圖便是一個(gè)最常見的變種:

怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式

如上圖所示,在這個(gè)變種中添加操作線程只有一個(gè),而刪除操作線程卻有兩個(gè),添加操作線程A如果操作子內(nèi)存區(qū)域1,則使用lock1,操作子內(nèi)存區(qū)域2時(shí)則使用lock2。添加操作線程A可以和刪除操作線程1和刪除操作線程2存在鎖競(jìng)爭(zhēng),但是刪除操作線程1和刪除操作線程2之間不存在鎖競(jìng)爭(zhēng)。從運(yùn)行情況來看,3個(gè)線程中至少有2個(gè)在同時(shí)運(yùn)行,如果有N個(gè)子內(nèi)存區(qū)域和N個(gè)刪除操作線程的話,那么至少有N個(gè)線程在同時(shí)運(yùn)行,因此這種鎖競(jìng)爭(zhēng)模式中,同樣可以保證當(dāng)CPU核數(shù)少于等于線程分組的個(gè)數(shù)時(shí),不會(huì)發(fā)生CPU饑餓現(xiàn)象。隊(duì)列池便是這種模式的一個(gè)很好的成功實(shí)踐。

線程分組競(jìng)爭(zhēng)模式是消除鎖競(jìng)爭(zhēng)造成多核CPU性能下降的最有效方式,它的性能近似于單核CPU中的多線程編程的性能,這種模式也是設(shè)計(jì)本地分布式數(shù)據(jù)結(jié)構(gòu)的一種有效方法。

到此,關(guān)于“怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章名稱:怎么理解多核編程中的線程分組競(jìng)爭(zhēng)模式
標(biāo)題路徑:http://m.rwnh.cn/article48/gdisep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、外貿(mào)建站、用戶體驗(yàn)ChatGPT、商城網(wǎng)站軟件開發(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í)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
连城县| 常宁市| 四川省| 昌乐县| 辽宁省| 合作市| 虎林市| 萝北县| 衡山县| 吉林省| 砚山县| 新乡市| 德阳市| 高平市| 淮滨县| 东阳市| 方正县| 乐昌市| 阿拉善右旗| 深水埗区| 平湖市| 连云港市| 大埔县| 丹凤县| 台湾省| 鄯善县| 隆回县| 上思县| 屏东市| 长顺县| 惠水县| 浦城县| 延安市| 临城县| 闸北区| 天门市| 哈尔滨市| 吉木萨尔县| 德惠市| 平乐县| 怀远县|