沈坤彧 :看得逼真的幸福
2346 2026-07-21 18:33
在 Golang 中 map 不是独霸的并并发安然的,自 1.9 才引进了 sync.Map ,发独sync.Map 的霸问引进切实其实措置了 map 的并发安然问题 ,不过 sync.Map 却没有完成 len() 函数,独霸的并假定想要筹算 sync.Map 的发独长度,略微有点贫穷,霸问需求独霸 Range 函数 。独霸的并
func main() { demo := make(map[int]int) go func() { for j := 0; j < 1000; j++ { demo[j] = j } }() go func() { for j := 0; j < 1000; j++ { fmt.Println(demo[j]) } }() time.Sleep(time.Second * 1)}奉行输进:
fatal error: concurrent map read and 发独map write
func main() { demo := sync.Map{ } go func() { for j := 0; j < 1000; j++ { demo.Store(j, j) } }() go func() { for j := 0; j < 1000; j++ { fmt.Println(demo.Load(j)) } }() time.Sleep(time.Second * 1)}奉行输进:
<nil> false
1 true...
999 true
func main() { demo := make(map[int]int) for j := 0; j < 1000; j++ { demo[j] = j } fmt.Println("len of demo:", len(demo))}奉行输进:
len of demo: 1000
func main() { demo := sync.Map{ } for j := 0; j < 1000; j++ { demo.Store(j, j) } lens := 0 demo.Range(func(key, value inte***ce{ }) bool { lens++ return true }) fmt.Println("len of demo:", lens)}奉行输进 :
len of demo: 1000
小结
到此这篇关于Go独霸sync.Map来措置map的霸问并发独霸问题标文章就引见到这了,更多相干Go言语 sync.Map措置map并发独霸内容请搜刮完竣下载之前的文章或延续不雅不雅不雅不雅鉴赏上面的相干文章希看大年夜师往后多多支撑完竣下载!
独霸的并