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.