Назад к вопросам
Купер
Junior — Middle
79
Какие последствия возникают при одновременной записи в Map из разных конкурирующих горутин?
Компании, где спрашивали
Ответ от нейросети
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()
}
Без такой защиты программа может аварийно завершиться.