日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

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

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

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

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

也就是說讀寫鎖并不是公平鎖。因為并不保證等待時間最長的線程能夠最先獲取鎖。

如果需要使用公平鎖,可以考慮使用sync.Mutex,它保證等待時間最長的線程能夠最先獲取鎖。但是需要注意的是,公平鎖會導(dǎo)致額外的開銷,因為它需要維護(hù)等待隊列,進(jìn)行線程切換等操作。


網(wǎng)站名稱:聊聊Golang的讀寫鎖
路徑分享:http://www.dlmjj.cn/article/cdjgdoo.html