Sobes.tech
Junior — Middle

Welche Situationen können bei gleichzeitiger Schreiboperation in einem Map-ähnlichen Speicher auftreten?

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 Daten in eine map schreiben, ohne zu synchronisieren, kann dies zu einem Laufzeit-Panic mit der Meldung "concurrent map writes" oder zu unerwartetem Verhalten des Programms führen.

Um solche Probleme zu vermeiden, sollten Synchronisationsmechanismen wie Mutex (sync.Mutex) oder spezialisierte Strukturen wie sync.Map verwendet werden, die für den gleichzeitigen Zugriff sicher sind.

Beispiel mit Mutex:

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

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

Ohne diesen Schutz kann gleichzeitiges Schreiben zu Datenbeschädigungen oder unerwartetem Programmabsturz führen.