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

Middle
357 просмотров
AFK Offer AI

Worker pool — фиксированное число горутин, обрабатывающих задачи из канала. Создаёшь jobs := make(chan Task, bufSize). Запускаешь N горутин, каждая в цикле читает из jobs и обрабатывает. Отправитель пишет задачи в канал. Закрываешь канал когда задачи кончились — воркеры выходят из range. sync.WaitGroup для ожидания завершения. Это базовый паттерн конкурентности в Go. Размер пула — обычно runtime.NumCPU() для CPU-bound или больше для IO-bound.

Следующий вопрос

Как делать batch insert?