【发布时间】:2014-07-29 22:18:55
【问题描述】:
type MyMap struct {
data map[int]int
}
func (m Mymap)foo(){
//insert or read from m.data
}
...
go func f (m *Mymap){
for {
//insert into m.data
}
}()
...
Var m Mymap
m.foo()
当我调用 m.foo() 时,我们知道,有一个“m”的副本,值副本,这是由编译器完成的。我的问题是,程序中是否存在竞争?这是从 var "m" 读取数据的某种方式,我的意思是,当您从 m.data 复制某些内容时,您可能需要一个读取锁,以防有人在 m.data 中插入值。
如果是线程安全的,编译器是否保证?
【问题讨论】:
标签: go thread-safety