执行闭包goroutine无法获得预期结果[closed]

问题描述 投票:-3回答:1
func main() {
    var number int = 0
    go func() {
        for {
            number++
            //time.Sleep(time.Nanosecond)
        }
    }()
    for {
        fmt.Println(number)
        time.Sleep(time.Second)
    }
}

数字的打印始终为0,但是在for循环中添加time.Sleep(time.Nanosecond)语句后,该值的打印将变为正常。为什么?

go goroutine
1个回答
0
投票

您有一场数据竞赛。阅读Go内存模型:

© www.soinside.com 2019 - 2024. All rights reserved.