1 回答
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
你有2個(gè)哥律:和你啟動(dòng)的那個(gè)。他們?cè)跊]有同步的情況下訪問變量(一個(gè)是寫入):這是一場(chǎng)數(shù)據(jù)競(jìng)賽。mainn
是否檢測(cè)到此種族取決于是否發(fā)生此不雅訪問。當(dāng) main() 函數(shù)結(jié)束時(shí),你的應(yīng)用也會(huì)結(jié)束,它不會(huì)等待其他非 goroutine 完成。main
如果增加睡眠延遲,將比睡眠結(jié)束更早結(jié)束,并且不會(huì)等待不雅的寫入發(fā)生,因此不會(huì)檢測(cè)到任何內(nèi)容。如果睡眠時(shí)間較短,短于執(zhí)行時(shí)間,則會(huì)發(fā)生不雅的寫入并被檢測(cè)到。main()n++fmt.Prinln()
10ms沒什么特別的。這只是在您的環(huán)境中執(zhí)行和終止應(yīng)用所需的大致時(shí)間。如果在語句之前執(zhí)行其他“冗長(zhǎng)”的任務(wù),例如:fmt.Println()Println()
for i := 0; i < 5_000_000_000; i++ {
}
fmt.Println(n)即使睡眠時(shí)間為 50 毫秒,也會(huì)檢測(cè)到比賽(因?yàn)樵撗h(huán)需要一些時(shí)間來執(zhí)行,從而允許在讀取調(diào)用和應(yīng)用終止之前發(fā)生不雅的寫入)。(一個(gè)簡(jiǎn)單的方法也可以,我只是不希望任何人得出錯(cuò)誤的結(jié)論,即他們以某種方式“互動(dòng)”彼此。nfmt.Println()time.Sleep()
- 1 回答
- 0 關(guān)注
- 85 瀏覽
添加回答
舉報(bào)
