Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: worker pool, goroutine, concurrency, task queue

Как реализовать worker pool в Go?

Понимание горутин

Короткий ответ

Worker pool — это фиксированное количество горутин, которые получают задачи из общего канала и обрабатывают их параллельно. Это ограничивает нагрузку и делает выполнение контролируемым.

Длинный ответ

Worker pool используется, когда нужно обрабатывать большое количество задач с контролем параллелизма. Суть:

  1. Создаётся канал задач.

  2. Запускается фиксированное количество воркеров (горутин).

  3. Каждый воркер читает из канала и выполняет задачу.

  4. Результаты можно передавать в отдельный канал или обрабатывать в месте получения.

Такой подход:

  • ограничивает количество активных горутин;

  • упрощает управление ресурсами;

  • повышает стабильность и предсказуемость нагрузки.

Worker pool особенно полезен для обработки запросов к БД, файловым системам и внешним API.

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Printf("worker %d processing job %d\n", id, j)
        results <- j * 2
    }
}

func main() {
    jobs := make(chan int, 5)
    results := make(chan int, 5)

    for w := 1; w <= 3; w++ {
        go worker(w, jobs, results)
    }

    for j := 1; j <= 5; j++ {
        jobs <- j
    }
    close(jobs)

    for a := 1; a <= 5; a++ {
        fmt.Println("result:", <-results)
    }
}
  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#worker pool

#goroutine

#concurrency

#task queue

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.