Junior — Middle
Bir nechta iplar yoki goroutinlar bilan ishlashda ma'lumotlarning izchilligini ta'minlash uchun qanday usullar qo'llaniladi?
sobes.tech AI
AIdan javob
Go'da bir nechta oqim yoki goroutine bilan ishlashda ma'lumotlarning izchilligini ta'minlash uchun quyidagi usullar qo'llaniladi:
-
Miyoklar (sync.Mutex) — bo'lishilgan ma'lumotlarga kirishni bloklaydi, faqat bitta oqim yoki goroutine ma'lumotlarni o'zgartirish imkoniyatiga ega bo'ladi.
-
Kanal (channels) — goroutine'lar o'rtasida ma'lumotlarni xavfsiz uzatishni ta'minlaydi, sinxronizatsiya va xabar almashishni kafolatlaydi.
-
sync/atomic paket — bloklamasdan primitiv ma'lumot turlarida atomar operatsiyalarni ta'minlaydi.
Miyokdan foydalanish misoli:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Kanal yordamida ma'lumotlarni uzatish:
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
Usul tanlovi aniq vazifa va ishlash tezligi hamda qulaylik talablariga bog'liq.