Junior — Middle
Vai ir iespējams nodrošināt drošību, vienlaikus rakstot Map no vairākiem pavedieniem?
sobes.tech AI
Atbilde no AI
Go standarta karte (map) nav droša vienlaicīgai rakstīšanai no vairākām gorutīnām. Ja vairākas gorutīnas vienlaicīgi raksta mapē bez sinhronizācijas, tas novedīs pie panikas.
Lai nodrošinātu drošību vienlaicīgas rakstīšanas laikā, var:
- Izmantot mutex (sync.Mutex vai sync.RWMutex), lai aizsargātu piekļuvi mapē.
- Izmantot specializētas drošas datu struktūras, piemēram, sync.Map, kas paredzētas konkurējošai piekļuvei.
Piemērs ar mutex:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Vai izmantot sync.Map:
var m sync.Map
func safeWrite(key string, value int) {
m.Store(key, value)
}
Tādējādi, nodrošinot drošību vienlaicīgai rakstīšanai, ir jāizmanto sinhronizācija.