|
В этом примере мы рассмотрим, как реализовать пул воркеров с помощью горутин и каналов. |
|
![]()
|
|
|
|
|
Вот воркер, который мы запустим в нескольких
конкурентных экземплярах. Воркеры будут получать
задачи из канала |
|
|
|
|
Чтобы использовать пул воркеров, нам нужно отправлять им работу и собирать результаты. Для этого создаём 2 канала. |
|
|
Запускаем 3 воркера, которые изначально заблокированы, так как задач ещё нет. |
|
|
Отправляем 5 задач в |
|
|
В конце собираем все результаты работы. Это также гарантирует, что горутины воркеров завершились. Альтернативный способ дождаться нескольких горутин — использовать WaitGroup. |
|
|
Запущенная программа показывает выполнение 5 задач разными воркерами. Программа занимает всего около 2 секунд, хотя общий объём работы составляет около 5 секунд, потому что 3 воркера работают конкурентно. |
|
|
Далее: WaitGroups.