根据围棋博客,
对于并发使用映射是不安全的: 没有定义同时读写映射时会发生什么。如果需要从并发执行的 goroutines 读写映射,访问必须通过某种同步机制进行。 (资料来源: https://blog.golang.org/go-maps-in-action)
有人能解释一下吗?跨例程的并发读操作似乎是允许的,但如果尝试从同一个键读写,并发读/写操作可能会产生竞态条件。
在某些情况下,这种最后的风险可以降低吗? 例如:
这不是代码(很明显) ,但我认为它显示了一种情况的轮廓,即即使 A 和 B 都尝试访问 m,也不会出现竞态条件,或者如果存在竞态条件,由于额外的约束,也不会出现问题。