Golang的sync.Map怎么简单易懂地解释?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1445个文字,预计阅读时间需要6分钟。
Golang sync.Map入门解析:简单了解其原理及代码解析链接:https://mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg建议对参照链接中的代码进行阅读,以便更好地理解sync.Map的结构和使用。sync.Map内部有两个map,分别用于读写操作,可理解为Sync包中的Map结构。
Golang sync.Map大白话解析结构体代码解析链接:mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg
建议对照参考链接代码食用
可以简单理解为:sync包中的Map结构体里面有两个map,分别是read和dirty,read和dirty的在结构上的最大不同点,就是read在dirty的基础上多了一个amended字段,用来表示dirty中是否存在read没有的数据。
其中read和dirty中的value值都是一个entry结构体,结构体中存放着指向该值的指针pointer,pointer有三种值,分别是nil,expunged,真正指向值的指针。nil是真正删除了,expunged是软删除。
另外还有一个misses字段和互斥锁mu,misses表示穿透了read直接命中dirty的次数。
本文共计1445个文字,预计阅读时间需要6分钟。
Golang sync.Map入门解析:简单了解其原理及代码解析链接:https://mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg建议对参照链接中的代码进行阅读,以便更好地理解sync.Map的结构和使用。sync.Map内部有两个map,分别用于读写操作,可理解为Sync包中的Map结构。
Golang sync.Map大白话解析结构体代码解析链接:mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg
建议对照参考链接代码食用
可以简单理解为:sync包中的Map结构体里面有两个map,分别是read和dirty,read和dirty的在结构上的最大不同点,就是read在dirty的基础上多了一个amended字段,用来表示dirty中是否存在read没有的数据。
其中read和dirty中的value值都是一个entry结构体,结构体中存放着指向该值的指针pointer,pointer有三种值,分别是nil,expunged,真正指向值的指针。nil是真正删除了,expunged是软删除。
另外还有一个misses字段和互斥锁mu,misses表示穿透了read直接命中dirty的次数。

