Sobes.tech
Junior — Middle

როგორ ხორციელდება კონტროლი და სინქრონიზაცია გორუტინების პროგრამაში?

sobes.tech AI

პასუხი AI-სგან

Go dilində, goroutine-lərin icrasını nəzarət etmək və sinxronizasiya etmək adətən aşağıdakı vasitələrlə həyata keçirilir:

  • WaitGroup sync paketindən — goroutine qrupunun tamamlanmasını gözləməyə imkan verir.
  • Kanal (channels) — goroutine-lər arasında məlumat və siqnalların ötürülməsi üçün istifadə olunur, sinxronizasiya təmin edir.

WaitGroup ilə nümunə:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // goroutine işi
}()
wg.Wait() // goroutine-in tamamlanmasını gözləyirik

Kanal vasitəsilə, məsələn, nəticələr və ya tamamlanma siqnalları ötürülə bilər:

ch := make(chan int)
go func() {
    ch <- 42 // dəyərin göndərilməsi
}()
qiymət := <-ch // dəyərin alınması, sinxronizasiya edir goroutine-ləri

Beləliklə, WaitGroup və kanallar goroutine-lərin nəzarəti və sinxronizasiyası üçün əsas vasitələrdir.