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

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

為什么會有數(shù)據(jù)競爭

為什么會有數(shù)據(jù)競爭

Go
慕俠2389804 2023-02-06 11:23:49
我正在閱讀 Dave Cheney 的帖子https://dave.cheney.net/2015/11/18/wednesday-pop-quiz-spot-the-race,但無法理解為什么該示例包含數(shù)據(jù)競爭。有人可以向我解釋嗎?
查看完整描述

1 回答

?
繁花如伊

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

這是博客文章中的相關(guān)代碼:


func (rpc *RPC) compute() {

    time.Sleep(time.Second)

    rpc.result = 42   /* W */

    close(rpc.done)

}


func (RPC) version() int {

    return 1

}


?

go rpc.compute()         

version := rpc.version() /* R */

<-rpc.done              

goroutinerpc.result在由 標記的行修改調(diào)用者的字段/* W */。這是容易理解的部分。


注釋行中的方法調(diào)用/* R */是 的語法糖(*rpc).version()。接收者值在方法調(diào)用時被復制,包括result字段。讀取與寫入并發(fā),/* W */因此是數(shù)據(jù)競爭。雖然程序沒有對復制的result字段做任何事情,但它仍然是一場數(shù)據(jù)競賽。


version()通過更改使用指針接收器的方法來修復:


func (*RPC) version() int {

    return 1

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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