Sobes.tech
Senior

Is het mogelijk om tegelijkertijd in één map te schrijven vanuit verschillende goroutines? Wat gebeurt er?

sobes.tech AI

Antwoord van AI

In Go is het niet veilig om tegelijkertijd in dezelfde map te schrijven vanuit verschillende goroutines zonder extra synchronisatie. De standaard map is niet thread-safe, en gelijktijdige schrijfbewerkingen kunnen leiden tot een panic (runtime panic) of datacorruptie.

Om een map veilig te gebruiken in een gelijktijdige omgeving, kun je:

  • sync.Mutex of sync.RWMutex gebruiken om toegang tot de map te beschermen.
  • sync.Map gebruiken, een gespecialiseerde en veilige datastructuur voor maps.

Voorbeeld met mutex:

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

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

Zonder deze bescherming kan het programma onverwacht crashen.