Middle — Middle+
Vai ir droši veikt ierakstu map konteinerā daudzprocesu vidē bez papildu sinhronizācijas?
sobes.tech AI
Atbilde no AI
Go standarta karte (map) nav droša rakstīšanai daudzķēžu vidē. Ja vairākas gorutīnas vienlaikus raksta map bez sinhronizācijas, tas novedīs pie sacensību stāvokļiem un izpildes laikā panikas.
Lai droši rakstītu map daudzķēžu vidē, ir jāizmanto:
- sync.Mutex vai sync.RWMutex piekļuves bloķēšanai;
- sync.Map, standarta bibliotēkas daudzķēžu droša karte.
Piemērs ar sync.Mutex:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bez šādas sinhronizācijas rakstīšana map ir nedroša.