第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么 Go stdlib 使用互斥鎖來讀取上下文的錯(cuò)誤字段?

為什么 Go stdlib 使用互斥鎖來讀取上下文的錯(cuò)誤字段?

Go
眼眸繁星 2023-01-03 15:48:43
ContextGo 標(biāo)準(zhǔn)庫中有許多接口的底層實(shí)現(xiàn)。例如,Background和TODO上下文由未公開的emptyCtx類型支持,該類型本質(zhì)上只是int一些存根方法(proof)。類似地,每次調(diào)用都會(huì)context.WithCancel()返回該cancelCtx類型的一個(gè)實(shí)例,該實(shí)例已經(jīng)是具有一堆互斥保護(hù)屬性(證明)的適當(dāng)結(jié)構(gòu):// A cancelCtx can be canceled. When canceled, it also cancels any children// that implement canceler.type cancelCtx struct {    Context    mu       sync.Mutex            // protects following fields    done     atomic.Value          // of chan struct{}, created lazily, closed by first cancel call    children map[canceler]struct{} // set to nil by the first cancel call    err      error                 // set to non-nil by the first cancel call}為什么該cancelCtx結(jié)構(gòu)使用互斥鎖而不是RWLock?例如,該Err()方法當(dāng)前獲得了一個(gè)完整的鎖,而它(可能)可能只使用了一個(gè)RLock:func (c *cancelCtx) Err() error {    c.mu.Lock()    err := c.err    c.mu.Unlock()    return err}
查看完整描述

1 回答

?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

原因之一應(yīng)該是RWLock 性能不佳

鎖的性能不取決于它提供的特性,它取決于底層的implementation. 雖然理論上RWLock可以提供更高的throughputs,但對于這種特定場景(改變一個(gè)微小的變量),Mutex可以提供更低的unnecessary overhead。


查看完整回答
反對 回復(fù) 2023-01-03
  • 1 回答
  • 0 關(guān)注
  • 107 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號