Sobes.tech
Junior — Middle

Wie verhält sich das Programm, wenn gleichzeitig ein konkurrierendes Lesen von Werten aus der Map erfolgt?

sobes.tech KI

Antwort von AI

In Go ist das gleichzeitige sichere Lesen aus einer Map ohne Panik oder Fehler. Probleme treten auf, wenn gleichzeitig geschrieben oder gelesen und geschrieben wird. Wenn nur mehrere Goroutines Werte aus der Map lesen, ohne sie zu ändern, ist das sicher. Wenn jedoch mindestens eine Goroutine die Map ändert, müssen Synchronisationsmechanismen wie sync.RWMutex oder sync.Map verwendet werden.

Beispiel für sicheres Lesen mit sync.RWMutex:

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

func read(key string) int {
    mu.RLock()
    defer mu.RUnlock()
    return m[key]
}

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

Auf diese Weise ist gleichzeitiges Lesen ohne Schreiben sicher, aber bei Schreibzugriffen ist Synchronisation erforderlich.