Sobes.tech
Middle — Middle+

Is het veilig om te schrijven naar een map-container in een multithreaded omgeving zonder extra synchronisatie?

sobes.tech AI

Antwoord van AI

In Go is de standaardkaart (map) niet threadveilig voor schrijven. Als meerdere goroutines gelijktijdig naar een map schrijven zonder synchronisatie, leidt dit tot racecondities en runtime paniek.

Om veilig naar een map te schrijven in een multithread-omgeving, moet je gebruiken:

  • sync.Mutex of sync.RWMutex om toegang te blokkeren;
  • sync.Map, een threadveilige implementatie van de kaart uit de standaardbibliotheek.

Voorbeeld met sync.Mutex:

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

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

Zonder deze synchronisatie is schrijven naar een map niet veilig.