Sobes.tech
Junior — Middle

Jak zsynchronizować dostęp do wspólnego zasobu za pomocą struktury Map i mechanizmu Mutex?

sobes.tech AI

Odpowiedź od AI

W Go, aby zsynchronizować dostęp do wspólnej struktury Map, zwykle używa się mutexa (sync.Mutex), ponieważ mapy nie są bezpieczne dla współbieżnego dostępu.

Przykład:

import (
    "sync"
)

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

func writeToMap(key string, value int) {
    mu.Lock()           // blokujemy dostęp
    sharedMap[key] = value
    mu.Unlock()         // odblokowujemy
}

func readFromMap(key string) (int, bool) {
    mu.Lock()
    val, ok := sharedMap[key]
    mu.Unlock()
    return val, ok
}

W ten sposób, przed odczytem lub zapisaniem do mapy, blokujemy mutex, aby uniknąć warunków wyścigu i zapewnić poprawne działanie w środowisku współbieżnym.