Sobes.tech
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.