Sobes.tech
Junior — Middle

Какви функции предоставя структурата WaitGroup в езика Go за синхронизиране на горутините?

sobes.tech AI

Отговор от AI

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

Основните методи на WaitGroup:

  • Add(delta int) — увеличава или намалява броя на очакваните горутини. Обикновено се извиква преди стартирането на горутините.

  • Done() — намалява брояча с 1, извиква се в края на работата на горутината.

  • Wait() — блокира изпълнението, докато броячът не стане нула.

Пример за използване:

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() // чакаме всички горутини да завършат
fmt.Println("Всички горутини са завършили")

По този начин, WaitGroup помага за координиране на паралелното изпълнение и гарантира, че програмата няма да приключи преждевременно.