Back to questions
Middle+
4
Является ли map потокобезопасной в Go?
Companies where asked
Magnit Tech
Answer from AI
sobes.tech AI
В Go встроенный тип map не является потокобезопасным для одновременного чтения и записи из нескольких горутин. Если несколько горутин одновременно читают и пишут в map без синхронизации, это приведёт к панике во время выполнения.
Для безопасного использования map в конкурентной среде нужно использовать механизмы синхронизации, например, mutex из пакета sync:
var mu sync.Mutex
m := make(map[string]int)
// Запись
mu.Lock()
m["key"] = 42
mu.Unlock()
// Чтение
mu.Lock()
value := m["key"]
mu.Unlock()
Альтернативно, можно использовать sync.Map, который реализует потокобезопасную карту с оптимизациями для определённых сценариев.