首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持并发的golang散列表

支持并发的golang散列表
EN

Stack Overflow用户
提问于 2019-10-20 11:59:24
回答 2查看 614关注 0票数 0

我需要使用一个非常大的散列表,并同时从许多读者和作者那里访问它。是否有像map这样的数据结构,支持许多并行读写,而不锁定每个访问的整个结构?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-20 19:52:12

因为你要了一张地图

不锁定整个结构,每次访问

我向你们介绍以下的执行情况:

https://github.com/cornelk/hashmap

该项目使用许多CPU体系结构中常见的原子指令实现纯无锁散列图数据结构。

普通的go sync.Map仍然使用底层的Mutex,它锁定了相应的映射数据结构。

票数 1
EN

Stack Overflow用户

发布于 2019-10-20 12:05:22

sync提供并发安全地图

Map类似于Go映射接口{}接口{},但是对于多个goroutines并发使用是安全的,而不需要额外的锁定或协调。加载、存储和删除在摊销的恒定时间内运行。

尽管规范本身指出了应该何时使用它的这两种特定情况(否则,它们建议使用带有锁定机制的普通映射):

  1. 当给定键的条目只写一次,但读了很多次时,就像缓存中的缓存那样,只有增长。
  2. 当多个goroutines读取、写入和覆盖不相交的键集的条目时
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58472781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档