Senior
53
Lze psát do jedné mapy z různých gorutin současně? Co se stane?
Společnosti byly požádány
А7
Odpověď od AI
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()
}
Без такой защиты программа может аварийно завершиться.