Sobes.tech
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, который реализует потокобезопасную карту с оптимизациями для определённых сценариев.