从不同的 goroutine 访问不同的结构成员是否安全?
我知道在没有同步的情况下写入同一个变量是危险的:
package main
type Apple struct {
color string
size uint
}
func main() {
apple := &Apple{}
go func() {
apple.color = "red"
}()
go func() {
apple.color = "green"
}()
}
但是你可以在没有任何同步的情况下写入不同的结构成员吗?
package main
type Apple struct {
color string
size uint
}
func main() {
apple := &Apple{}
go func() {
apple.color = "red"
}()
go func() {
apple.size = 42
}()
}
或者我应该使用chan或sync.Mutex为此?
慕慕森
相关分类