掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Go語言中的RWMutex是一種讀寫鎖,它采用了讀寫分離的思想,可以同時支持多個讀操作,但只能同時有一個寫操作。它的原理是這樣的:

為永春等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及永春網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站建設(shè)、永春網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
當(dāng)有大量讀時,寫操作不會餓死,這是因?yàn)樽x寫鎖支持優(yōu)先處理寫操作的。具體來說,當(dāng)一個寫操作請求鎖時,如果此時已經(jīng)有其他讀或?qū)懖僮鞒钟墟i,那么該寫操作會被阻塞,等待其他操作釋放鎖。但是,一旦沒有任何讀或?qū)懖僮鞒钟墟i,那么該寫操作會立即獲取到鎖,并且優(yōu)先執(zhí)行,即使此時已經(jīng)有很多讀操作在等待。
也就是說讀寫鎖并不是公平鎖。因?yàn)椴⒉槐WC等待時間最長的線程能夠最先獲取鎖。
如果需要使用公平鎖,可以考慮使用sync.Mutex,它保證等待時間最長的線程能夠最先獲取鎖。但是需要注意的是,公平鎖會導(dǎo)致額外的開銷,因?yàn)樗枰S護(hù)等待隊(duì)列,進(jìn)行線程切換等操作。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流