Senior
57
È possibile scrivere in una stessa mappa da diverse goroutine contemporaneamente? Cosa succederà?
Le aziende dove è stato chiesto
А7
Risposta dell'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()
}
Без такой защиты программа может аварийно завершиться.