Sobes.tech
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-ის დასრულებას.