gpt4 book ai didi

go - 我可以同时更新 Golang map 吗?

转载 作者:行者123 更新时间:2023-12-01 22:45:11 25 4
gpt4 key购买 nike

大家都在说同时写入/读取 golang map 不安全 ,但是我们可以只更新它而不写新 key 吗?

我们知道下面的代码会导致 fatal error: concurrent map read and map write .

var m = make(map[int]int)

for i := 0; i < 1000; i++ {
go func() {
m[i] = i
}()
}

现在我想知道我们是否可以同时更新 map ,如下所示。

var m = make(map[int]int)

// init memory structure of map
for i := 0; i < 1000; i++ {
m[i] = 0
}

// just update values for old keys concurrently
for i := 0; i < 1000; i++ {
go func() {
m[i] = i
}()
}

我们可以这样做吗?

最佳答案

Can we do that?



不,当然不。它只会产生一个运行时错误“ fatal error :并发映射写入”(实际上是您的代码,因此您可以自己尝试)。

停止与语言抗争并尝试变得聪明: 没有 并发 (甚至不是“聪明”的)!

关于go - 我可以同时更新 Golang map 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com