Sobes.tech
Junior — Middle

Bir proqramda işləyən bütün goroutinlərin tamamlanmasını necə təmin etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, xaricdən zorla goroutine-i dayandırmaq üçün daxili bir yol yoxdur. Bütün işləyən goroutine-lərin tamamlanmasını təmin etmək üçün adətən sync.WaitGroup ilə sinxronizasiya istifadə olunur.

İş prinsipi:

  • Hər bir goroutine başlamazdan əvvəl wg.Add(1) çağırılır.
  • Goroutine daxilində, sonunda, wg.Done() çağırılır.
  • Əsas funksiyada wg.Wait() çağırılır, bu da icraatı bloklayır, sayğac sıfıra çatana qədər.

Nümunə:

var wg sync.WaitGroup

wg.Add(1)
go func() {
    defer wg.Done()
    // goroutine işi
}()

wg.Wait() // bütün goroutine-lərin tamamlanmasını gözləyin

Bu şəkildə, proqram bütün goroutine-lərin tamamlanmasını təmin edir və davam edir və ya bitir.