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

Можно ли писать в одну map из разных горутин одновременно? Что произойдёт?

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

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

sobes.tech AI

В Go нельзя безопасно писать в одну map из разных горутин одновременно без дополнительной синхронизации. Стандартная map не является потокобезопасной, и одновременные операции записи могут привести к панике (runtime panic) или повреждению данных.

Чтобы безопасно использовать map в конкурентной среде, можно:

  • Использовать sync.Mutex или sync.RWMutex для защиты доступа к map.
  • Использовать sync.Map — специализированную потокобезопасную структуру данных для map.

Пример с mutex:

var (
    m = make(map[string]int)
    mu sync.Mutex
)

func write(key string, value int) {
    mu.Lock()
    m[key] = value
    mu.Unlock()
}

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