Все говорят, что одновременная запись / чтение карты Голанга небезопасно , но можем ли мы просто обновить ее, но не писать новые ключи?
Мы знаем, что приведенный ниже код вызовет 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
}()
}
Теперь мне интересно, можем ли мы обновить карту одновременно, как показано ниже.
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
}()
}
Можем ли мы это сделать?