如何使用Perl同时处理部分任务顺序?

lex*_*ope 5 concurrency perl multithreading perl-data-structures

我有一组部分有序的任务,对于每个任务,在执行之前必须执行部分顺序之前严格执行的所有任务.我想同时执行不相关的任务(在一个之前或之后)以尝试最小化总执行时间 - 但是在完成依赖之前不启动任务.

任务将作为(非perl)子进程运行.

我应该如何使用Perl解决这样的问题?什么是并发控制工具和数据结构?

cho*_*oba 1

我会使用数组的哈希值。对于每个任务,其所有先决条件都将在相应的数组中提及:

$prereq{task1} = [qw/task2 task3 task4/];
Run Code Online (Sandbox Code Playgroud)

我会将已完成的任务保存在不同的哈希中,然后

my @prereq = @{ $prereq{$task} };
if (@prereq == grep exists $completed{$_}, @prereq) {
    run($task);
}
Run Code Online (Sandbox Code Playgroud)