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)实现。
它的主要特点包括:
- 并发安全:支持多个协程同时进行读写操作。
- 高效:在并发环境下提供较好的性能。
- 简单易用:与普通的 map 用法类似。
的实现采用了一些并发安全的技术,如原子操作和内存屏障。
在使用 时,需要注意以下几点:
- 不要在持有锁的情况下进行长时间的操作。
- 避免频繁的写入和读取。
- 注意内存使用,避免过大的
二、源码
(一)结构
// 安全读写 map
type Map struct