Sobes.tech
Back to questions
Junior — Middle
91

Каким образом можно определить, что все дочерние горутины завершили выполнение в программе на языке Go?

Answer from AI

sobes.tech 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 позволяет главной горутине дождаться завершения всех дочерних.