Sobes.tech
Junior — Middle

Эгер бир нече гурутин бир убакта картада бир эле ачкычка кирүүгө аракет кылышса, эмне болот?

sobes.tech AI

AIден жооп

Go тилинде, карта (map) — бул бир нече жиптердин бир убакта бир эле картага окуу жана/же жазуу аракеттерин жасоосуна корголбогон маалыматтар структурасы. Эгер бир нече горутин бир убакта картага окуп жатса жана/же жазып жатса, синхрондоштуруу жок болсо, бул атаандаштык шарттарга жана иштөө учурунда паникага алып келет.

Анын алдын алуу үчүн, синхрондоштуруу механизмдерин колдонуу керек, мисалы:

  • sync.Mutex аркылуу картага кирүүнү блоктоо.
  • sync.RWMutex аркылуу окуу жана жазуу үчүн блокторду бөлүү.
  • Мамлекеттик структуралар, мисалы, sync.Map, алар атаандаштыкка туруктуу кирүүгө мүмкүндүк берет.

sync.Mutex колдонуп картага коргоо мисалы:

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

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

func read(key string) int {
    mu.Lock()
    defer mu.Unlock()
    return m[key]
}