Junior — Middle
როგორ შეიძლება დადგინდეს, რომ ყველა შვილური გორუტინი დასრულდა Go პროგრამაში?
sobes.tech AI
პასუხი AI-სგან
Go-ში ჩვეულებრივ გამოიყენება სინქრონიზაცია sync.WaitGroup ტიპის საშუალებით, რათა დადგინდეს ყველა შვილობილი goroutine-ის დასრულება.
მაგალითი:
var wg sync.WaitGroup
wg.Add(3) // ველით 3 goroutine-ს
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // დასრულების სიგნალი
// goroutine-ის სამუშაო
fmt.Println("Goroutine", id, "დასრულდა")
}(i)
}
wg.Wait() // ველით, სანამ ყველა goroutine-ი არ გამოიძახებს Done()
fmt.Println("ყველა goroutine დასრულდა")
ამ გზით, WaitGroup საშუალებას აძლევს მთავარ goroutine-ს დაელოდოს ყველა შვილობილი goroutine-ის დასრულებას.