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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
聊聊Golang的讀寫(xiě)鎖

Go語(yǔ)言中的RWMutex是一種讀寫(xiě)鎖,它采用了讀寫(xiě)分離的思想,可以同時(shí)支持多個(gè)讀操作,但只能同時(shí)有一個(gè)寫(xiě)操作。它的原理是這樣的:

為永春等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及永春網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站建設(shè)、永春網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

  1. RWMutex內(nèi)部維護(hù)兩個(gè)計(jì)數(shù)器,一個(gè)是讀計(jì)數(shù)器,一個(gè)是寫(xiě)計(jì)數(shù)器。
  2. 在讀操作執(zhí)行時(shí),讀計(jì)數(shù)器會(huì)加1,如果此時(shí)寫(xiě)計(jì)數(shù)器的值不為0,則說(shuō)明有寫(xiě)操作正在進(jìn)行,那么這個(gè)讀操作就需要阻塞等待。
  3. 在寫(xiě)操作執(zhí)行時(shí),會(huì)先判斷讀計(jì)數(shù)器的值是否為0,如果不為0,則說(shuō)明有讀操作正在進(jìn)行,那么這個(gè)寫(xiě)操作就需要阻塞等待。寫(xiě)操作執(zhí)行時(shí),會(huì)把寫(xiě)計(jì)數(shù)器加1,這樣其他讀寫(xiě)操作就無(wú)法繼續(xù)執(zhí)行了。
  4. 當(dāng)讀操作執(zhí)行完畢時(shí),讀計(jì)數(shù)器會(huì)減1,如果此時(shí)讀計(jì)數(shù)器的值為0,那么說(shuō)明沒(méi)有其他讀操作在進(jìn)行了,可以允許寫(xiě)操作了。
  5. 當(dāng)寫(xiě)操作執(zhí)行完畢時(shí),寫(xiě)計(jì)數(shù)器會(huì)減1,如果此時(shí)寫(xiě)計(jì)數(shù)器的值為0,那么說(shuō)明沒(méi)有其他讀寫(xiě)操作在進(jìn)行了,此時(shí)其他讀寫(xiě)操作就可以繼續(xù)執(zhí)行了。

當(dāng)有大量讀時(shí),寫(xiě)操作不會(huì)餓死,這是因?yàn)樽x寫(xiě)鎖支持優(yōu)先處理寫(xiě)操作的。具體來(lái)說(shuō),當(dāng)一個(gè)寫(xiě)操作請(qǐng)求鎖時(shí),如果此時(shí)已經(jīng)有其他讀或?qū)懖僮鞒钟墟i,那么該寫(xiě)操作會(huì)被阻塞,等待其他操作釋放鎖。但是,一旦沒(méi)有任何讀或?qū)懖僮鞒钟墟i,那么該寫(xiě)操作會(huì)立即獲取到鎖,并且優(yōu)先執(zhí)行,即使此時(shí)已經(jīng)有很多讀操作在等待。

也就是說(shuō)讀寫(xiě)鎖并不是公平鎖。因?yàn)椴⒉槐WC等待時(shí)間最長(zhǎng)的線(xiàn)程能夠最先獲取鎖。

如果需要使用公平鎖,可以考慮使用sync.Mutex,它保證等待時(shí)間最長(zhǎng)的線(xiàn)程能夠最先獲取鎖。但是需要注意的是,公平鎖會(huì)導(dǎo)致額外的開(kāi)銷(xiāo),因?yàn)樗枰S護(hù)等待隊(duì)列,進(jìn)行線(xiàn)程切換等操作。


網(wǎng)站名稱(chēng):聊聊Golang的讀寫(xiě)鎖
鏈接地址:http://www.5511xx.com/article/cdjgdoo.html