1 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
在 Go Build 中使用 '-race' 標(biāo)志時(shí)會(huì)發(fā)生什么
然后,在啟用所謂的“比賽檢測(cè)器”的情況下構(gòu)建程序。數(shù)據(jù)競(jìng)賽是一種編程錯(cuò)誤,任何具有數(shù)據(jù)競(jìng)賽的程序都是無效的,其行為是未定義的。切勿使用數(shù)據(jù)競(jìng)跑編寫代碼。
數(shù)據(jù)競(jìng)賽是指兩個(gè)或多個(gè) goroutine 在沒有正確同步的情況下讀取和寫入同一內(nèi)存。數(shù)據(jù)競(jìng)賽時(shí)有發(fā)生,但這是程序員的一個(gè)主要錯(cuò)誤。
競(jìng)速檢測(cè)器檢測(cè)到對(duì)同一存儲(chǔ)器的未同步讀/寫,并將其報(bào)告為故障(確實(shí)如此)。請(qǐng)注意,如果 race 檢測(cè)器檢測(cè)到數(shù)據(jù)競(jìng)跑,即使它在沒有 -race 的情況下“正?!边\(yùn)行,您的代碼也是錯(cuò)誤的。
競(jìng)態(tài)檢測(cè)器并不總是打開,因?yàn)闄z測(cè)數(shù)據(jù)競(jìng)跑會(huì)大大減慢執(zhí)行速度。
- 1 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報(bào)