Junior — Middle
Dasturda goroutinlarning bajarilishi va sinxronizatsiyasini qanday nazorat qilish amalga oshiriladi?
sobes.tech AI
AIdan javob
Go tilida, goroutinlarni bajarilishini nazorat qilish va sinxronizatsiya qilish odatda quyidagi vositalar yordamida amalga oshiriladi:
- WaitGroup
syncpaketidan — goroutinlar guruhining yakunlanishini kutishga imkon beradi. - Kanal (channels) — goroutinlar o'rtasida ma'lumotlar va signallarni uzatish uchun ishlatiladi, sinxronizatsiyani ta'minlaydi.
WaitGroup bilan misol:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// goroutinning ishlashi
}()
wg.Wait() // goroutin yakunlanishini kutamiz
Kanal yordamida, masalan, natijalar yoki yakunlanish signallarini uzatish mumkin:
ch := make(chan int)
go func() {
ch <- 42 // qiymatni yuborish
}()
qiymat := <-ch // qiymatni qabul qilish, goroutinlarni sinxronlashtiradi
Shu sababli, WaitGroup va kanallar goroutinlarni nazorat qilish va sinxronizatsiya qilish uchun asosiy vositalardir.