Sobes.tech
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 საშუალებას აძლევს შესრულების სინქრონიზაციას და გარანტიას, რომ კონტროლის ნაკადი დაელოდება ყველა პარალელური დავალების დასრულებას.