Sobes.tech
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.