Junior — Middle
Kaip užtikrinti saugų prieigą prie kortelės daugiagijų aplinkoje?
sobes.tech AI
Atsakymas iš AI
Go kalboje, norint saugiai pasiekti žemėlapį (map) daugiagijų aplinkoje, būtina naudoti sinchronizaciją, nes map nėra srauto saugi duomenų struktūra. Dažniausias būdas yra naudoti mutex'ą (sync.Mutex arba sync.RWMutex), kad užblokuotumėte prieigą skaitymo ir rašymo metu.
Pavyzdys naudojant sync.RWMutex:
import (
"sync"
)
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) int {
mu.RLock() // užrakinti skaitymui
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock() // užrakinti rašymui
defer mu.Unlock()
m[key] = value
}
Taip pat, Go kalboje yra sync.Map tipas, kuris įgyvendina srauto saugų žemėlapį su optimizacijomis dažniems skaitymo operacijoms. Jį galima naudoti, jei nėra reikalinga griežta tipizacija ir norima paprastumo:
import "sync"
var m sync.Map
m.Store("key", 42) // įrašymas
value, ok := m.Load("key") // skaitymas
Taigi, norint saugiai pasiekti žemėlapį daugiagijų aplinkoje, naudokite mutex'us arba sync.Map.