Назад к вопросам
СБЕР
Junior — Middle
76
Что произойдет, если одновременно несколько горутин попытаются получить доступ к одному и тому же ключу в карте?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go карта (map) не является потокобезопасной структурой данных. Если несколько горутин одновременно пытаются читать и/или писать в одну и ту же карту без синхронизации, это приведёт к гонкам данных и, скорее всего, к панике во время выполнения.
Чтобы избежать этого, необходимо использовать механизмы синхронизации, например:
sync.Mutexдля блокировки доступа к карте.sync.RWMutexдля разделения блокировок на чтение и запись.- Специализированные структуры, например,
sync.Map, которая безопасна для конкурентного доступа.
Пример использования sync.Mutex для защиты карты:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
func read(key string) int {
mu.Lock()
defer mu.Unlock()
return m[key]
}