优化 Go 中的 map 并发存取

88250 ·
确实有问题。 p.sources[name] = source和source, present = p.sources[name]不是原子操作
#5
更多评论
看到最后一个代码,就醉了,明显也是不安全的么: p.lock.RLock() p.lock.RUnlock() p.lock.Lock() p.lock.UnLock()
#1
没有问题呀。读锁解锁后,加写锁,然后再次判断了name键值是否存在,如果存在是使用存在的键值,不存在才创建新的。
#2