🟡 Средний · 2 очк. Паттерны проектирования
Как устроен worker pool (пул воркеров) в Go и зачем он нужен?
A Фиксированное число горутин обрабатывает задачи из общего канала, ограничивая параллелизм
B Динамический пул потоков ОС для выполнения тяжелых вычислений
C Очередь задач с приоритетами
D Пул соединений к базе данных
Объяснение вопроса

Worker pool - паттерн, при котором создается фиксированное число горутин (воркеров), каждая из которых обрабатывает задачи из общего канала. Так ограничивается степень параллелизма и потребление памяти/CPU.

jobs := make(chan int, 100)
results := make(chan int, 100)
for w := 0; w < 5; w++ {
    go func() {
        for j := range jobs { results <- j * 2 }
    }()
}
for j := 1; j <= 10; j++ { jobs <- j }
close(jobs)
for a := 1; a <= 10; a++ { <-results }

Закрытие канала jobs сигнализирует воркерам о завершении.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.