Senior
Este posibil să scrii într-un map din mai multe goroutines în același timp? Ce se va întâmpla?
sobes.tech AI
Răspuns de la AI
În Go, nu se poate scrie în mod sigur într-un map din mai multe goroutine-uri simultan fără sincronizare suplimentară. Map-ul standard nu este sigur pentru concurență, iar operațiile de scriere simultană pot duce la panic (runtime panic) sau corupție de date.
Pentru a utiliza în siguranță un map într-un mediu concurent, se poate:
- Folosi sync.Mutex sau sync.RWMutex pentru a proteja accesul la map.
- Folosi sync.Map, o structură de date specializată și sigură pentru concurență.
Exemplu cu mutex:
var (
m = make(map[string]int)
mu sync.Mutex
)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Fără această protecție, programul poate înceta neașteptat.