Sobes.tech
Junior — Middle

Көп агымдардан Mapка бир убакта жазуу учурунда коопсуздукту камсыз кылуу мүмкүнбү?

sobes.tech AI

AIден жооп

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

Коопсуздук үчүн:

  • sync.Mutex же sync.RWMutex колдонуп, картага кирүүнү коргоо керек.
  • Специализацияланган, көптөгөн иштетүүгө ылайыктуу, мисалы, sync.Map сыяктуу, колдонуу керек.

Мисал муутекс менен:

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

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

Же sync.Map колдонуу:

var m sync.Map

func safeWrite(key string, value int) {
    m.Store(key, value)
}

Ошентип, бир убакта жазуу үчүн коопсуздук үчүн синхрондоштуруу керек.