Golang的sync.Map怎么简单易懂地解释?

2026-05-22 20:110阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计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,分别是readdirtyreaddirty的在结构上的最大不同点,就是readdirty的基础上多了一个amended字段,用来表示dirty中是否存在read没有的数据。

其中readdirty中的value值都是一个entry结构体,结构体中存放着指向该值的指针pointer,pointer有三种值,分别是nilexpunged,真正指向值的指针。nil是真正删除了,expunged是软删除。

另外还有一个misses字段和互斥锁mumisses表示穿透了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,分别是readdirtyreaddirty的在结构上的最大不同点,就是readdirty的基础上多了一个amended字段,用来表示dirty中是否存在read没有的数据。

其中readdirty中的value值都是一个entry结构体,结构体中存放着指向该值的指针pointer,pointer有三种值,分别是nilexpunged,真正指向值的指针。nil是真正删除了,expunged是软删除。

另外还有一个misses字段和互斥锁mumisses表示穿透了read直接命中dirty的次数。

阅读全文