golang 并发map 简单解析
都知道map并发是不安全 会被运行时panic
####### sync.Map 源码解析
type Map struct {
mu Mutex
read atomic.Value // readOnly
dirty map[interface{}]*entry
misses int
}
type readOnly struct {
m map[interface{}]*entry
amended bool // true if the dirty map contains some key not in m.
}
结论
- 时间换空间 思想 通过读写分离 思想 read dirty 两个map
- 因为read 原子的 只读操作
- miss 表示当read 不存在是穿透到 dirty 同时 miss +1 直到 miss == ditty.len 提升 dirty 为read
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/16208095.html