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

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

我應(yīng)該用互斥量保護(hù)結(jié)構(gòu)對象嗎?

我應(yīng)該用互斥量保護(hù)結(jié)構(gòu)對象嗎?

Go
慕妹3242003 2023-06-19 16:54:33
我使用 4 個 go 例程來分配結(jié)構(gòu)實(shí)例的不同成員變量。每個成員變量只能由一個 go routine 訪問。訪問struct實(shí)例時是否需要加mutex?我不確定這 4 個 go 例程是否訪問相同的內(nèi)存。我覺得我應(yīng)該是因?yàn)樗麄兯腥硕伎梢栽L問持有人。這段代碼演示了我在做什么。package mainimport (    "fmt"    "sync")func main() {    var wg sync.WaitGroup    var res Response    var mu sync.Mutex    wg.Add(1)    go func() {        defer wg.Done()        mu.Lock()        defer mu.Unlock()        res.A = []string{"a"}    }()    wg.Add(1)    go func() {        defer wg.Done()        mu.Lock()        defer mu.Unlock()        res.B = "b"    }()    wg.Add(1)    go func() {        defer wg.Done()        mu.Lock()        defer mu.Unlock()        res.C = 100    }()    wg.Add(1)    go func() {        defer wg.Done()        mu.Lock()        defer mu.Unlock()        res.D = map[string]string{            "d": "dd",        }    }()    wg.Wait()    fmt.Println(res)}type Response struct {    A []string    B string    C int    D map[string]string}
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個贊

您不需要此程序的互斥量。就 Go 內(nèi)存模型而言,結(jié)構(gòu)的單獨(dú)字段是單獨(dú)的變量。由于四個 goroutine 正在訪問四個獨(dú)立的(子)變量,因此即使沒有互斥量,也不存在數(shù)據(jù)競爭。

查看完整回答
反對 回復(fù) 2023-06-19
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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