Junior
როგორ გამოვიკვლიოთ პროგრამირების ენაში (Go), რომ ყველა გაშვებული ნაკადი დასრულდა და მართვის ნაკადი შეიძლება გამოიყენოს შედეგები?
sobes.tech AI
პასუხი AI-სგან
Go ენის ფარგლებში, ყველა ამჟამად მუშაობა goroutine-ის დასრულების მონიტორინგისთვის, ჩვეულებრივ, გამოიყენება 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() // სიგნალი გორუტინის დასრულებაზე
// გორუტინის სამუშაო
fmt.Println("Goroutine", id, "დასრულდა")
}(i)
}
wg.Wait() // მთავარი ნაკადი იკეტება, სანამ wg-ის გამრიცხველი არ გახდება 0
fmt.Println("ყველა goroutine დასრულდა, შედეგები შეიძლება გამოყენებულ იქნას")
ამ გზით, WaitGroup საშუალებას აძლევს შესრულების სინქრონიზაციას და გარანტიას, რომ კონტროლის ნაკადი დაელოდება ყველა პარალელური დავალების დასრულებას.