Sobes.tech
Junior — Middle

Hoe gedraagt het programma zich als er gelijktijdig gelezen wordt uit een map?

sobes.tech AI

Antwoord van AI

In Go is gelijktijdig veilig lezen uit een map niet paniek of fouten. Problemen ontstaan wanneer er gelijktijdig wordt geschreven of gelezen en geschreven. Als in het programma slechts enkele goroutines waarden uit de map lezen zonder deze te wijzigen, is dit veilig. Maar als minstens één goroutine de map wijzigt, moeten synchronisatiemechanismen zoals sync.RWMutex of sync.Map worden gebruikt.

Voorbeeld van veilige lezing met behulp van 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
}

Op deze manier is gelijktijdig lezen zonder schrijven veilig, maar bij schrijven is synchronisatie nodig.