Sobes.tech
Junior — Middle

Ce consecințe apar atunci când se scrie simultan într-un Map din mai multe goroutines concurente?

sobes.tech AI

Răspuns de la AI

În Go, harta standard (map) nu este sigură pentru accesul concurent pentru citire și scriere din mai multe goroutines. Dacă mai multe goroutines încearcă să scrie simultan în aceeași hartă fără sincronizare, acest lucru va duce la condiții de cursă, panic în timpul execuției (eroare fatală: scrieri concurente pe hartă) și comportament imprevizibil al programului.

Pentru a evita problemele, trebuie să folosiți:

  • Mutexuri (sync.Mutex) pentru a proteja accesul la hartă.
  • Structuri de date specializate, sigure pentru concurență, precum sync.Map.

Exemplu cu mutex:

var mu sync.Mutex
var m = make(map[string]int)

func write(key string, value int) {
    mu.Lock()
    m[key] = value
    mu.Unlock()
}

Fără această protecție, programul poate înceta brusc.