1 回答

TA贡献1866条经验 获得超5个赞
你猜怎么了?我运行了您的应用程序,得到了不同的输出:有时,49,有时,有时(有时)。485051
如果您在启用竞争检测器 ( go run -race play.go) 的情况下运行您的应用程序,它会告诉您存在数据竞争:
==================
WARNING: DATA RACE
Read at 0x00c00009a010 by goroutine 7:
main.incr()
/home/icza/gows/src/play/play.go:9 +0x3a
Previous write at 0x00c00009a010 by goroutine 6:
main.incr()
/home/icza/gows/src/play/play.go:9 +0x50
Goroutine 7 (running) created at:
main.main()
/home/icza/gows/src/play/play.go:17 +0x83
Goroutine 6 (finished) created at:
main.main()
/home/icza/gows/src/play/play.go:17 +0x83
==================
当你有数据竞争时,你的应用程序的行为是未定义的。“看似有时工作”也符合“未定义”行为,但未定义也意味着它也可以做任何其他事情。
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报