gpt4 book ai didi

go - 执行闭包 goroutine 未能达到预期结果

转载 作者:行者123 更新时间:2023-12-01 22:44:32 24 4
gpt4 key购买 nike

关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question



func main() {
var number int = 0
go func() {
for {
number++
//time.Sleep(time.Nanosecond)
}
}()
for {
fmt.Println(number)
time.Sleep(time.Second)
}
}

number的打印总是0,但是在for循环中加上time.Sleep(time.Nanosecond)语句后,value的打印就正常了。为什么?

最佳答案

你有一个数据竞赛。阅读 Go 内存模型:

https://golang.org/ref/mem

如果在 goroutine 之间没有使用 channel 或锁进行显式同步,那么就没有发生之前的关系,也不能保证一个 goroutine 会看到另一个 goroutine 的效果。如果您使用的是 Go v1.13 或更早版本,那么忙循环将不会屈服于其他 goroutine。

关于go - 执行闭包 goroutine 未能达到预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60674596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com