У меня есть частично упорядоченный набор задач, где для каждой задачи все задачи, которые находятся строго перед ней в частичном порядке, должны быть выполнены, прежде чем она может быть выполнена. Я хочу одновременно выполнять задачи, которые не связаны (ни до, ни после друг друга), чтобы попытаться минимизировать общее время выполнения, но без запуска задачи до завершения ее зависимостей.
Задачи будут запускаться как (не-perl) дочерние процессы.
Как мне подойти к решению такой проблемы с помощью Perl? Какие средства управления параллелизмом доступны и структуры данных?