Middle — Middle+
Көп жиптүү чөйрөдө кошумча синхрондоштуусуз map контейнерине жазуу коопсузбу?
sobes.tech AI
AIден жооп
Go'да стандарттык карта (map) көптөгөн жиптер үчүн жазуу үчүн коопсуз эмес. Эгер бир нече goroutine бир убакта map'ка жазып жатса жана синхрондоштуруу болбосо, бул атаандаштык шарттарды жана иштөө учурунда паникага алып келет.
Көп жиптүү чөйрөдө map'ка коопсуз жазуу үчүн төмөнкүлөрдү колдонуш керек:
- sync.Mutex же sync.RWMutex кирүүнү бөгөттөө үчүн;
- sync.Map, стандарттык китепканадан көп жиптүү коопсуз карта ишке ашыруу.
Мисал 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()
}
Мындай синхрондоштуруу болбосо, map'ка жазуу коопсуз эмес.