Back to questions
Купер
Junior — Middle
80
Какие последствия возникают при одновременной записи в Map из разных конкурирующих горутин?
Companies where asked
Answer from AI
sobes.tech AI
В Go стандартная карта (map) не является потокобезопасной для одновременного чтения и записи из нескольких горутин. Если несколько горутин одновременно пытаются записывать в одну и ту же map без синхронизации, это приведет к гонкам данных, панике runtime (fatal error: concurrent map writes) и непредсказуемому поведению программы.
Чтобы избежать проблем, нужно использовать:
- Мьютексы (sync.Mutex) для защиты доступа к map.
- Специализированные потокобезопасные структуры данных, например sync.Map.
Пример с мьютексом:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Без такой защиты программа может аварийно завершиться.