譬如:
type S struct {
X string
}
s := S{}
go func() {
time.Sleep(xxx)
s.X = s.X + "nnn" // B
}()
s = S{X:"nnn"} // A
假设是多核的,A,B 阶段,同时执行,会有并发问题吗?
1
per 2018-08-09 10:51:37 +08:00 via iPhone
会的吧,同一字段的读写。加个锁
|
2
hahasong 2018-08-09 11:01:44 +08:00
会的,给 S 加个 mu.lock
|
3
ray1888 2018-08-09 13:38:17 +08:00 via Android
可以试一下 atomic 的 cas,不一定要用锁解决
|
4
KickAssTonight 2018-08-09 17:42:27 +08:00
并发是存在的,可以用 sync.Mutex 对资源上锁。
https://tour.golang.org/concurrency/9 |