我需要使用一个非常大的哈希表,并从许多读者和许多作者并行访问它。是否有像map这样的数据结构,支持许多并行读取和写入,而无需每次访问锁定整个结构?
2 回答
慕村225694
TA贡献1880条经验 获得超4个赞
既然你要了地图
每次访问时无需锁定整个结构
我指导您执行以下实施:
https://github.com/cornelk/hashmap
该项目使用许多CPU架构中常见的原子指令实现了纯无锁哈希图数据结构
常规 gosync.Map
仍然使用底层互斥锁来锁定相应的映射数据结构。
心有法竹
TA贡献1866条经验 获得超5个赞
包sync
提供并发安全映射。
Map 类似于 Go 的 map[interface{}]interface{},但可以安全地由多个 goroutine 并发使用,无需额外的锁定或协调。加载、存储和删除在分摊常量时间内运行。
尽管规范本身指出了应该使用这两种特定情况(否则他们建议使用带有锁定机制的法线贴图):
当给定键的条目仅写入一次但读取多次时,就像在只会增长的缓存中一样
当多个 goroutine 读取、写入和覆盖不相交的键集的条目时
- 2 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消