【发布时间】:2017-10-05 04:41:36
【问题描述】:
在 Golang 中,我们必须将并发更改同步到 Map。如果我的地图包含另一个这样的地图:
map[string]map[string]*CustomStruct
.. 写东西时我必须在所有这些中都使用 Lock 吗?
如果我在内部 Map 中写入一些东西 -> 外部 Map 也会被更改,所以我仍然需要同步外部 Map 的更改。
如果我锁定外部 Map 的更改 -> 没有其他人可以写入内部 Map -> 没有必要锁定内部 Map。
我是对的还是它以不同的方式工作,我必须锁定所有地图?
【问题讨论】:
-
只需在竞争检测器下尝试一下 :-) 如果您可以确保没有两个代码路径同时写入同一个内部映射,那么您应该很好。但是为什么要冒险呢?这里的一个可爱的小互斥锁有什么问题,或者可能有几个?
-
@Volker,我可以加几个锁,但我觉得没用的锁/解锁就像未使用的变量-为什么它存在?!
标签: go concurrency