Senior
58
Peut-on écrire dans une même map depuis différentes goroutines en même temps ? Que se passera-t-il ?
Entreprises à qui on a demandé
А7
Réponse de l'IA
sobes.tech IA
В 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()
}
Без такой защиты программа может аварийно завершиться.