Go 源码之

时间:2025-02-26 07:51:56

Go 源码之

目录

  • Go 源码之
  • 一、简介
  • 二、源码
    • (一)结构
    • (二)读Load
      • dirty升级为read
    • (三)写Store
      • ()
    • (四)删Delete
  • 三、常见问题
    • 1. 结构用了原子操作read ,那为什么不直接使用原子操作即可,还要加一个dirty
    • 2. 的使用场景
    • 3. 为什么 不能被复制
    • 4. 是如何从dirty升级为read的
    • 5. 的设计理念
    • 6. 中的readOnly中的amended的设计?
    • 7. 什么情况下元素会同时存在 read 和 dirty,并且为什么?
    • 8. 最坏情况下内存翻倍
  • 总结
  • 参考资料

一、简介

是 Go 语言标准库中的一个并发安全的映射(Map)实现。

它的主要特点包括:

  1. 并发安全:支持多个协程同时进行读写操作。
  2. 高效:在并发环境下提供较好的性能。
  3. 简单易用:与普通的 map 用法类似。

的实现采用了一些并发安全的技术,如原子操作和内存屏障。

在使用 时,需要注意以下几点:

  1. 不要在持有锁的情况下进行长时间的操作。
  2. 避免频繁的写入和读取。
  3. 注意内存使用,避免过大的

二、源码

(一)结构


// 安全读写 map
type Map struct