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.