Sobes.tech
Junior — Middle

Как може да се определи, че всички дъщерни горутини са приключили изпълнението си в програма на Go?

sobes.tech AI

Отговор от AI

В Go обикновено се използва синхронизация с помощта на типа sync.WaitGroup, за да се определи завършването на всички дъщерни горутини.

Пример:

var wg sync.WaitGroup

wg.Add(3) // очакваме 3 горутини

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // сигнализираме за завършване
        // работа на горутината
        fmt.Println("Горутина", id, "завърши")
    }(i)
}

wg.Wait() // блокира, докато всички горутини не извикат Done
fmt.Println("Всички горутини са завършили")

По този начин WaitGroup позволява на главната горутина да изчака завършването на всички дъщерни.