
Golang
文章平均质量分 78
暖羲
这个作者很懒,什么都没留下…
展开
-
Go数据结构
map 支持并发读 不支持并发读写、并发写 sync.map 解析 1、空间换时间。通过冗余的两个数据结构(read、dirty),实现加锁对性能的影响。 2、使用只读数据(read),避免读写冲突。 3、动态调整,miss次数多了之后,将dirty数据提升为read。 4、double-checking(双重检测)。 5、延迟删除。 删除一个键值只是打标记,只有在提升dirty的时候才清理删除的数据。 6、优先从read读取、更新、删除,因为对read的读取不需要锁。 ...原创 2021-09-13 18:34:32 · 190 阅读 · 0 评论 -
Golang基础解析
参考资料 https://github.com/talkgo/night https://github.com/talkgo/read 并发 channel 源码解析 chan源码解析 select selecat源码解析 轮询顺序 pollOrder 和加锁顺序 lockOrder 分别是通过以下的方式确认的: 轮询顺序:通过 runtime.fastrandn 函数引入随机性; 加锁顺序:按照 Channel 的地址排序后确定加锁顺序,避免死锁; selectgo 构建出来的 sudog 会将原创 2021-09-01 15:45:31 · 587 阅读 · 0 评论