Junior — Middle
Go proqramında bütün uşaq goroutinlərinin tamamlandığını necə müəyyən etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, bütün uşaq goroutinlərinin tamamlandığını müəyyən etmək üçün adətən sync.WaitGroup tipi ilə sinxronizasiya istifadə olunur.
Nümunə:
var wg sync.WaitGroup
wg.Add(3) // 3 goroutine gözləyirik
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // tamamlanmanı siqnallaşdırırıq
// goroutine-in işi
fmt.Println("Goroutine", id, "tamamlandı")
}(i)
}
wg.Wait() // bütün goroutine-lər Done çağırana qədər gözləyir
fmt.Println("Bütün goroutine-lər tamamlandı")
Bu yolla, WaitGroup əsas goroutine-ə bütün uşaqların tamamlanmasını gözləməyə imkan verir.