Junior — Middle
Kuidas saab kontrollida, kas andmete lukustamine on toimunud, kasutades map koos mutex'iga?
sobes.tech AI
Vastus AI-lt
Go keeles, kui kasutate mutex'i, et kaitsta juurdepääsu kaardile, ei ole võimalik otseselt kontrollida, kas lock on toimunud, kuna standardne sync.Mutex ei paku meetodeid selle oleku kontrollimiseks.
Kuid, saate:
- Kasutada
sync.RWMutexja hoolikalt kavandada koodi, et lukustused oleksid selged. - Testides või silumiseks lisada logimine enne ja pärast
Lock()jaUnlock()väljakutseid. - Edasijõudnuma kontrolli jaoks kasutada
sync.Mutexsyncpaketist koos ümbristega, mis registreerivad lukustamise oleku (näiteks, boolean lipp), kuid see nõuab ettevaatust.
Näide logimisega:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
fmt.Println("Mutex lukustamine")
mu.Lock()
defer mu.Unlock()
fmt.Println("Mutex lukustatud")
m[key] = value
fmt.Println("Mutex vabastamine")
}
Sel viisil saab kaudselt veenduda, et lukustamine toimub, kuid sisseehitatud vahendeid mutex'i oleku kontrollimiseks ei ole.