Junior — Middle
При реализирането на вашата програма използвахте ли механизма за синхронизация waitgroup?
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.Printf("Горутина %d изпълнява\n", id)
// някаква работа
}(i)
}
wg.Wait() // чакаме всички Done да бъдат извикани
fmt.Println("Всички горутини са завършили")
По този начин, WaitGroup помага за правилното управление на паралелизма и гарантира, че програмата няма да приключи преждевременно.