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