日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
linux線程間的同步與互斥知識點(diǎn)總結(jié)

在線程并發(fā)執(zhí)行的時(shí)候,我們需要保證臨界資源的安全訪問,防止線程爭搶資源,造成數(shù)據(jù)二義性。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了安仁免費(fèi)建站歡迎大家使用!

線程同步: 條件變量

為什么使用條件變量?

對臨界資源的時(shí)序可控性,條件滿足會通知其他等待操作臨界資源的線程,類似信號。 場景:T-DAY展會排隊(duì)參觀/生產(chǎn)者消費(fèi)者模型

條件變量是什么?

是一種同步機(jī)制,一個(gè)線程用于修改這個(gè)變量使其滿足其它線程繼續(xù)往下執(zhí)行的條件,其它線程則接收條件已經(jīng)發(fā)生改變的信號。

條件變量操作?

初始化和銷毀

pthread_cond_wait

條件不滿足 會釋放鎖并阻塞等待 , 這個(gè)函數(shù)是原子性操作:1.將線程放入條件等待隊(duì)列 2.釋放鎖 

條件滿足 則線程會被喚醒并加鎖

pthread_cond_signal 一對一喚醒   

喚醒等待隊(duì)列中的一個(gè)線程

pthread_cond_broadcast 廣播喚醒

喚醒等待隊(duì)列中的全部線程 

為什么等待和解鎖需要原子操作/為什么條件變量要使用互斥鎖?

因?yàn)閜thread_cond_wait中的鎖是為了保護(hù)條件變量,防止錯過信號,如果等待解鎖不是原子性操作,比如線程A先解鎖,此時(shí)CPU時(shí)間片切換到線程B,線程B加鎖并發(fā)送條件變量信號,此時(shí)再切換到線程A,線程A還來不及等待就錯過了信號,就可能會永久阻塞下去。所以,等待和解鎖必須是原子性操作。

為什么需要while循環(huán)判斷臨界資源是否存在?

在一對多的情況下,生產(chǎn)者發(fā)送一個(gè)信號,等待的線程被喚醒并加鎖,但是只有一個(gè)線程能加鎖,其他線程就會阻塞等待鎖,如果這個(gè)線程用完了臨界資源,其他線程不進(jìn)行判斷就繼續(xù)往下走,是不合理的。

singnal要先解鎖還是后解鎖?

如果先解鎖,鎖被沒有阻塞等待的線程拿到了,再把臨界資源使用了,解鎖后的singal就沒意義了,也就是虛假喚醒;

先singal喚醒,再讓喚醒的線程爭搶鎖,在linux下,有兩個(gè)隊(duì)列,一個(gè)是cond_wait,一個(gè)是mutex_lock,singal只是讓cond_wait上的線程轉(zhuǎn)移到mutex_lock,不會返回用戶空間,這樣能提高效率。

線程互斥: 互斥鎖

為什么使用互斥鎖?

對臨界資源同時(shí)間唯一訪問,保護(hù)臨界資源防止修改。 場景:黃牛搶票

互斥鎖是什么?

是一個(gè)0/1計(jì)數(shù)器,1代表有資源能操作,0代表沒有資源可以操作。

互斥鎖操作?

初始化和銷毀

加鎖—如果計(jì)數(shù)為1,置0,進(jìn)行需要的操作;如果計(jì)數(shù)為0,則阻塞等待計(jì)數(shù)變?yōu)?

解鎖—計(jì)數(shù)置為1

本篇文章到此結(jié)束,如果您有相關(guān)技術(shù)方面疑問可以聯(lián)系我們技術(shù)人員遠(yuǎn)程解決,感謝大家支持本站!

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


網(wǎng)站名稱:linux線程間的同步與互斥知識點(diǎn)總結(jié)
網(wǎng)站URL:http://www.5511xx.com/article/djeijgo.html