Junior — Middle
Hogyan biztosítható a biztonságos hozzáférés a kártyához több szálas környezetben?
sobes.tech MI
Válasz az MI-től
Go nyelven, több szálas környezetben a térkép (map) biztonságos eléréséhez szinkronizációt kell alkalmazni, mivel a map nem szálbiztos adatstruktúra. A leggyakoribb módszer a mutex (sync.Mutex vagy sync.RWMutex) használata az olvasás és írás közbeni hozzáférés blokkolására.
Példa sync.RWMutex használatával:
import (
"sync"
)
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) int {
mu.RLock() // zárolás olvasáshoz
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock() // zárolás íráshoz
defer mu.Unlock()
m[key] = value
}
Emellett a Go-ban létezik a sync.Map típus, amely egy szálbiztos térképet valósít meg, optimalizálva a gyakori olvasási műveleteket. Használható, ha nem szükséges szigorú típusellenőrzés és egyszerűségre törekszünk:
import "sync"
var m sync.Map
m.Store("key", 42) // tárolás
value, ok := m.Load("key") // betöltés
Így, több szálas környezetben, a biztonságos hozzáféréshez mutexeket vagy a sync.Map-ot használja.