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

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

在沒有通道的 goroutine 中安全地從共享數(shù)據(jù)結(jié)構(gòu)中讀取

在沒有通道的 goroutine 中安全地從共享數(shù)據(jù)結(jié)構(gòu)中讀取

Go
ITMISS 2022-07-11 14:41:50
我是 Golang 的新手,開始使用 goroutines。我很好奇在不使用通道或互斥鎖的情況下從另一個 goroutine 寫入的數(shù)據(jù)結(jié)構(gòu)中讀取是否安全。在下面的示例中,events數(shù)組對 main 和 goroutine 可見,但 main 只讀取它,而 goroutine 正在修改它。這被認(rèn)為是安全的嗎?var events = []string{}func main() {    go func() {        for {            if len(events) > 30 {                events = nil            }            event := "The time is now " + time.Now().String()            events = append(events, event)            time.Sleep(time.Millisecond * 200)        }    }()    for {        for i:=0; i < len(events); i++ {            fmt.Println(events[i])        }        time.Sleep(time.Millisecond * 100)        fmt.Println("--------------------------------------------------------")    }}
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗 獲得超8個贊

不,這絕對不安全。您應(yīng)該圍繞訪問使用同步原語events,或重新設(shè)計以使用通道。

您的代碼今天在特定架構(gòu)/操作系統(tǒng)上可能運行良好,但它可能會因微小的更改和/或在另一個架構(gòu)/操作系統(tǒng)上而意外中斷。

嘗試運行您的代碼以-race進(jìn)行驗證。你可能會看到WARNING: DATA RACE。

另請參閱此答案。


查看完整回答
反對 回復(fù) 2022-07-11
  • 1 回答
  • 0 關(guān)注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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