譬如:
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 阶段,同时执行,会有并发问题吗?
譬如:
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 Aug 9, 2018 via iPhone
会的吧,同一字段的读写。加个锁
|
2
hahasong Aug 9, 2018
会的,给 S 加个 mu.lock
|
3
ray1888 Aug 9, 2018 via Android
可以试一下 atomic 的 cas,不一定要用锁解决
|
4
KickAssTonight Aug 9, 2018
并发是存在的,可以用 sync.Mutex 对资源上锁。
https://tour.golang.org/concurrency/9 |