Junior — Middle
Welche Folgen hat es, wenn man gleichzeitig in eine Map aus verschiedenen konkurrierenden Goroutines schreibt?
sobes.tech KI
Antwort von AI
In Go ist die Standardkarte (map) nicht thread-sicher für gleichzeitiges Lesen und Schreiben aus mehreren Goroutinen. Wenn mehrere Goroutinen gleichzeitig versuchen, in dieselbe Map ohne Synchronisierung zu schreiben, führt dies zu Race Conditions, Runtime-Panik (fataler Fehler: gleichzeitige Map-Schreibvorgänge) und unvorhersehbarem Verhalten des Programms.
Um Probleme zu vermeiden, sollte man:
- Mutexes (sync.Mutex) verwenden, um den Zugriff auf die Map zu schützen.
- Spezialisierte thread-sichere Datenstrukturen wie sync.Map verwenden.
Beispiel mit Mutex:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Ohne diesen Schutz kann das Programm unerwartet abstürzen.