Sobes.tech
Назад к вопросам
Middle+
3

Является ли map потокобезопасной в Go?

Компании, где спрашивали
Magnit Tech

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

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