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 позволява на главната горутина да изчака завършването на всички дъщерни.