Sobes.tech
Middle — Middle+

Ko'p ipli muhitda qo'shimcha sinxronizatsiya qilmasdan map konteyneriga xavfsiz yozish mumkinmi?

sobes.tech AI

AIdan javob

Go tilida standart xarita (map) yozish uchun xavfsiz emas. Agar bir nechta goroutinlar bir vaqtning o'zida mapga yozayotgan bo'lsa, sinxronizatsiya qilmaslik, ma'lumotlar urushlariga va ish vaqtida panikaga olib keladi.

Ko'p ipli muhitda mapga xavfsiz yozish uchun quyidagilarni ishlatish kerak:

  • kirishni bloklash uchun sync.Mutex yoki sync.RWMutex;
  • standart kutubxonadan xavfsiz ipli xarita amalga oshirilgan sync.Map.

sync.Mutex bilan misol:

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

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

Bunday sinxronizatsiya bo'lmasa, mapga yozish xavfsiz emas.