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