【发布时间】:2016-03-08 22:29:11
【问题描述】:
我有一张地图,其中包含需要在清除地图之前释放的对象。我很想在遍历地图时迭代地图并删除/释放对象。
这是一个模拟示例 https://play.golang.org/p/kAtPoUgMsq
由于迭代地图的唯一方法是通过范围,我将如何同步多个生产者和多个消费者?
我不想读取锁定地图,因为这会使迭代期间无法删除/修改键。
【问题讨论】:
-
我们需要更多的上下文来处理这个问题。地图包含什么?它很大吗?发布一个东西有多快? (什么正在释放?)如果一个释放的对象被另一个goroutine使用,这是否是一场灾难?如果是,是什么决定了从地图中挑选出来的对象还能使用多久?什么是应用程序以及它的优先级是什么(例如最大化吞吐量与限制延迟)?
标签: data-structures go concurrency