Sobes.tech
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.