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