【发布时间】:2020-08-04 21:02:29
【问题描述】:
我正在开发一个 golang 项目,其中树节点存储在地图中以便快速访问。对地图的写入永远不会同时发生(并且对于每个键,它们只发生一次),但我想同时读取两个读/写。我一直在阅读有关 sync.Map 和仅使用 RWMutex 锁的信息,但我不确定哪个更适合此用例(或者是否有解决此问题的 3rd 方包)。是否有人对方法有建议/有任何资源来阅读不同的选项?谢谢!
【问题讨论】:
-
The docs for
sync.Map非常清楚地解释了何时使用您自己的锁定或协调的常规地图是有益的:地图类型针对两种常见用例进行了优化:(1)当给定的条目key 只会被写入一次,但会被读取多次,例如在只会增长的缓存中,或者 (2) 当多个 goroutine 读取、写入和覆盖不相交的键集的条目时。 -
看起来
sync.Map是适合这项工作的工具
标签: go concurrency synchronization