-
Map的知识点
- Map是无序的,所以每次遍历的顺序随机
- 原生的Map不支持并发读写
- Map中 Key 必须要是被比较类型 Value 可以是任意类型
不可被比较的 : slice、map 、 func - Map的底层结构是HSMap
-
Map的并发操作
- 测试Map是否并发
func main() { test := map[int]string{1: "test"} go func() { for { test[1] = "test" } }() go func() { for { test[1] = "test" } }() for { } fmt.Println(test) }
返回数据:
fatal error: concurrent map writes
- 解决方案1 : Map中加锁
var s sync.RWMutex var Test = map[int]string{1: "test"} func main() { for i := 0; i < 50; i++ { go test() } time.Sleep(5
Golang从入门到放弃200618--Map(3)Map的并发
最新推荐文章于 2023-02-14 10:22:38 发布
本文深入讨论了Golang中Map的并发问题,指出原生Map不支持并发读写,并强调Key必须是可比较类型。文章提到了并发操作可能导致的性能瓶颈,并分析了两种并发控制策略的优缺点:官方的读写分离方案以及在Map中加锁。同时,提出了通过降低锁粒度以优化并发性能的思路,并给出了测试Map并发的面试题。
摘要由CSDN通过智能技术生成