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.