Sobes.tech
Назад к вопросам
Junior — Middle
88

Какие последствия могут возникнуть при одновременной записи в карту из нескольких потоков?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

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()
}

Без такой синхронизации программа может аварийно завершиться.