Sobes.tech
Junior — Middle

Төрттүрлі атаандашып жаткан gorutinтерден бир убакта Mapка жазуу кандай натыйжаларга алып келет?

sobes.tech AI

AIден жооп

Goда стандарттык картасы (map) бир нече горутинден бир убакта окуу жана жазуу үчүн коопсуз эмес. Эгер бир нече горутин бир убакта бирдей картага жазууга аракет кылса, бул маалыматтардын атаандаштыгы, иштөө учурунда паника (фаталдык каталар: бир нече картага бир убакта жазуу) жана программа күтүлбөгөндөй иштөө менен аяктайт.

Маселелердин алдын алуу үчүн:

  • Mapке кирүүнү коргоо үчүн mutexтер (sync.Mutex) колдонуу керек.
  • Специалдаштырылган, көптөгөн иштөө үчүн коопсуз структуралар, мисалы, sync.Map.

Mutex менен мисал:

var mu sync.Mutex
var m = make(map[string]int)

func write(key string, value int) {
    mu.Lock()
    m[key] = value
    mu.Unlock()
}

Бул коргоо жок болсо, программа күтүлбөгөндөй жабылышы мүмкүн.