Back to questions
Junior — Middle
88
Можешь показать пример применения механизма ожидания групп в программировании?
Companies where asked
Twinby
Answer from AI
sobes.tech AI
В Go механизм ожидания групп (sync.WaitGroup) используется для ожидания завершения набора горутин. Это удобно, когда нужно запустить несколько параллельных задач и дождаться их окончания.
Пример:
package main
import (
"fmt"
"sync"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done() // Сообщаем, что работа завершена
fmt.Printf("Worker %d started\n", id)
// Здесь может быть любая работа
fmt.Printf("Worker %d finished\n", id)
}
func main() {
var wg sync.WaitGroup
numWorkers := 3
wg.Add(numWorkers) // Устанавливаем количество ожидаемых горутин
for i := 1; i <= numWorkers; i++ {
go worker(i, &wg)
}
wg.Wait() // Ждем, пока все горутины вызовут Done()
fmt.Println("All workers completed")
}
В этом примере main запускает 3 горутины, каждая из которых выполняет функцию worker. WaitGroup позволяет main дождаться завершения всех горутин перед выходом из программы.