Я все еще довольно новичок в параллельных вычислениях, поэтому я не очень уверен, какой инструмент использовать для этой работы.
У меня есть System.Threading.Tasks.Task
, который должен дождаться n число заданий для завершения, прежде чем начать. Сложность в том, что некоторые из ее зависимостей могут запускаться после запуска этой задачи (вы гарантированно никогда не нажмете 0 зависимых задач, пока все они не будут выполнены).
Вот то, что происходит
- Родительский поток создает где-то между 1 и (NUMBER_OF_CPU_CORES - 1) задач.
- Родительский поток создает задачу, которая будет запущена после завершения всех рабочих задач.
- Родительский поток создает поток мониторинга
- Поток мониторинга может убить рабочую задачу или порождать новую задачу в зависимости от нагрузки.
Я могу выяснить все до шага 4. Как получить задачу из шага 2, чтобы дождаться запуска, пока не завершатся все новые рабочие потоки, созданные на шаге 4?