Sobes.tech
Middle — Middle+

Kann man in einer Multithread-Umgebung sicher in einen Map-Container schreiben, ohne zusätzliche Synchronisation?

sobes.tech KI

Antwort von AI

In Go ist die Standardkarte (map) nicht threadsicher für Schreibzugriffe. Wenn mehrere Goroutines gleichzeitig in eine map schreiben, ohne zu synchronisieren, führt dies zu Race Conditions und Laufzeitpaniken.

Um sicher in einer multithreaded Umgebung in eine map zu schreiben, sollte man verwenden:

  • sync.Mutex oder sync.RWMutex zum Sperren des Zugriffs;
  • sync.Map, eine threadsichere Implementierung der Karte aus der Standardbibliothek.

Beispiel mit 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()
}

Ohne diese Synchronisation ist das Schreiben in eine map unsicher.