安全
Go 为什么不在语言层面支持 map 并发?
Posts on 煎é±0 次浏览
大家好,我是煎鱼。 很多小伙伴学习 Go 语言的语法时,可能只是轻轻地看到过这个问题,结果一旦上手,多多少少一个组内总会碰到过几次。 甚至会发现有一定年限的程序员也会遇到。有小伙伴疑惑了,这么折腾,为什么 Go 不直接在语言层面就支持 map 并发,那得有多香? 为什么原生不支持 凭什么 Go 官方还不支持,难不成太复杂了,性能太差了,到底是为什么? 官方答复原因如下(via @go faq): 典型使用场景:map 的典型使用场景是不需要从多个 goroutine 中进行安全访问。 非典型场景(需要原子操作):map 可能是一些更大的数据结构或已经同步的计算的一部分。 性能场景考虑:若是只是为少数程序增加安全性,导致 map 所有的操作都要处理 mutex,将会降低大多数程序的性能。 核心来讲就是:Go 团队在经过了长时间的讨论后,认为原生 map 更应适配典型使用场景。
原文:https://eddycjy.com/posts/go/map-con/
