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.