golang编程总结(十一)sync.map
1.在map的基础上,支持线程安全的load,store等操作
2.内部分成了read,dirty两个容器
3.查询会在read中查询,没有查询到的话,会在dirty中查询,并且miss次数+1,miss次数等于dirty的长度时,dirty上升为read
3.如果某个key在read中,直接cas更新即可,因为entry中是一个指针,read的更新会同步到dirty上,如果不在read中,需要在dirty中更新
4.删除使用标记删除,如果key在read中存在,标记为删除,如果key不存在于read中,那么dirty中的key被删除,当dirty上升为read时,被删除的key不会被复制

浙公网安备 33010602011771号