Sobes.tech
Senior

Bir xil xaritada turli goroutinlardan yozish mumkinmi? Nima bo'ladi?

sobes.tech AI

AIdan javob

Go tilida, qo'shimcha sinxronizatsiya bo'lmagan holda, bir xil xaritaga turli goroutinlardan xavfsiz yozish mumkin emas. Standart xarita bir vaqtning o'zida yozish operatsiyalariga mos kelmaydi va bu panik (runtime panic) yoki ma'lumotlarning buzilishiga olib kelishi mumkin.

Xaritani raqobat muhitida xavfsiz ishlatish uchun:

  • sync.Mutex yoki sync.RWMutex dan foydalanish orqali kirishni himoyalash mumkin.
  • sync.Map dan foydalanish, bu maxsus va raqobatga chidamli ma'lumotlar tuzilmasi.

Mutex bilan misol:

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

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

Bunday himoya bo'lmasa, dastur kutilmagan tarzda tugashi mumkin.