为了账号安全,请及时绑定邮箱和手机立即绑定

具有并发支持的 golang 哈希表

具有并发支持的 golang 哈希表

Go
凤凰求蛊 2023-07-31 15:29:48
我需要使用一个非常大的哈希表,并从许多读者和许多作者并行访问它。是否有像map这样的数据结构,支持许多并行读取和写入,而无需每次访问锁定整个结构?
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

既然你要了地图

每次访问时无需锁定整个结构

我指导您执行以下实施:

https://github.com/cornelk/hashmap

该项目使用许多CPU架构中常见的原子指令实现了纯无锁哈希图数据结构

常规 gosync.Map仍然使用底层互斥锁来锁定相应的映射数据结构。


查看完整回答
反对 回复 2023-07-31
?
心有法竹

TA贡献1866条经验 获得超5个赞

sync提供并发安全映射。

Map 类似于 Go 的 map[interface{}]interface{},但可以安全地由多个 goroutine 并发使用,无需额外的锁定或协调。加载、存储和删除在分摊常量时间内运行。


尽管规范本身指出了应该使用这两种特定情况(否则他们建议使用带有锁定机制的法线贴图):

  1. 当给定键的条目仅写入一次但读取多次时,就像在只会增长的缓存中一样

  2. 当多个 goroutine 读取、写入和覆盖不相交的键集的条目时


查看完整回答
反对 回复 2023-07-31
  • 2 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信