在我的代码中存储配置的常见模式是受 RWMutex 保护的“map[string]interface{}”,但通常在应用启动后(可以在多个 go-routine 中触发),地图变得完全只读。所以我有一种感觉,从某个时间点开始,读取时的 RWMutex 应该是不必要的。
此配置映射的示例位于 http://play.golang.org/p/tkbj9DBok_
让我想到这一点的一个事实是,在一些生产代码中,它实际上以这种方式对共享对象进行了不受保护的访问(尽管它在初始化后主要是只读的),我理解使用 RWMutex 进行保护的正常方式,但很有趣部分是这种格式错误的代码在过去几个月没有遇到问题。
在某个准确的“时间点”之后,写入从缓存刷新到内存并保证不再需要写入后,读取实际上可以在没有 RWMutex.RLock 的情况下进行,这是真的吗?如果是,无锁访问前的时间点或如何设置条件?
LEATH
相关分类