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 помага за координиране на паралелното изпълнение и гарантира, че програмата няма да приключи преждевременно.