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
posted @ 2022-04-29 20:05  vx_guanchaoguo0  阅读(39)  评论(0编辑  收藏  举报