Сколько ресурсов ЦП получает подпрограмма, зависит от многих вещей.
В общем, мы можем сказать, что подпрограмма, которая обрабатывает только числа, делимые на 100, скорее всего будет ждать намного больше, чемДругой.Вы не должны беспокоиться об этом, поскольку ожидание элемента в канале не требует ресурсов ЦП, поэтому, если у вас «достаточно» других подпрограмм, для которых есть задачи, они могут использовать ваш ЦП.
Ваш примерэто просто по понятным причинам, но в реальном примере было бы выгоднее абстрагировать ваши задачи в общие задачи (например, обработка любого числа может быть задачей), создать и использовать общий рабочий пул и отправить все задачи для выполненияв бассейн.Таким образом, независимо от того, сколько у пула имеется подпрограмм, если есть работа, и есть свободная (ожидающая) подпрограмма, она выполнит задачу, максимально используя ваш ресурс ЦП.Обработчик заданий (исполнитель) должен знать, что делать с числом, равным 100
или 101
.
. Пример того, как можно реализовать такой пул подпрограмм, см. идиоматический рабочий пул потоков в Go?