Sobes.tech
Junior

Dasturlash tilida (Go) barcha ishga tushirilgan goroutinlar tugaganligini va boshqaruvchi oqim natijalarni ishlatishi mumkinligini qanday aniqlash mumkin?

sobes.tech AI

AIdan javob

Go dilində, işləyən bütün goroutinlərin tamamlanmasını izləmək üçün adətən sync.WaitGroup tipi istifadə olunur. Bu, əsas axının bütün goroutinlərin tamamlanmasını gözləməsinə imkan verir.

İstifadə nümunəsi:

var wg sync.WaitGroup

wg.Add(3) // 3 goroutin gözlənilir

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // goroutin tamamlandığını bildirir
        // goroutin işi
        fmt.Println("Goroutin", id, "tamamlandı")
    }(i)
}

wg.Wait() // əsas axın, wg sayacı 0 olana qədər bloklanır
fmt.Println("Bütün goroutinlər tamamlandı, nəticələr istifadə oluna bilər")

Bu şəkildə, WaitGroup icraatı sinxronlaşdırmağa və idarə edən axının bütün paralel tapşırıqların tamamlanmasını gözləməsinə imkan verir.