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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解決 Go 中重復的互斥鎖

解決 Go 中重復的互斥鎖

Go
ITMISS 2021-11-15 20:47:42
我在 Go 程序中有一堆函數(shù),它們在一個結構上工作,該結構使用互斥鎖來管理對其函數(shù)的并發(fā)訪問。其中一些對特定數(shù)據(jù)進行操作的函數(shù)需要鎖,因此使用 mutex.Lock() 來獲取管理對該數(shù)據(jù)訪問的互斥鎖。今天我遇到了一個問題,其中兩個鎖定方法相互調用。一旦 mutex.Lock() 第二次被調用,它就會阻塞——當然。我面臨的問題與此代碼非常相似:http : //play.golang.org/p/rPARZsordI關于如何解決這個問題,Go 中有什么最佳實踐嗎?據(jù)我所知,遞歸鎖在 Go 中不可用。
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經(jīng)驗 獲得超5個贊

這似乎是您系統(tǒng)的設計缺陷。您應該找出需要鎖定和解鎖的部分。例如,如果你做的是


func (t *Thing) A() { t.Lock(); defer t.Unlock(); t.foo(); t.B() }

func (t *Thing) B() { t.Lock(); defer t.Unlock(); t.bar() }

那么你應該做的是


func (t *Thing) A() { t.Lock(); defer t.Unlock(); t.foo(); t.b() }

func (t *Thing) B() { t.Lock(); defer t.Unlock(); t.b() }

func (t *Thing) b() { t.bar() }


查看完整回答
反對 回復 2021-11-15
  • 1 回答
  • 0 關注
  • 227 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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