Назад к вопросам
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()
}
Без такой защиты программа может аварийно завершиться.