multithreading - 如何使用 Perl 并发处理部分任务?

标签 multithreading perl concurrency perl-data-structures

我有一组部分排序的任务,其中对于每个任务,所有在部分顺序中严格位于它之前的任务必须在执行之前执行。我想同时执行不相关(在彼此之前或之后)的任务,以尽量减少总执行时间 - 但在其依赖关系完成之前不启动任务。

这些任务将作为(非 perl)子进程运行。

我应该如何使用 Perl 解决这样的问题?有哪些并发控制设施和数据结构可用?

最佳答案

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

$prereq{task1} = [qw/task2 task3 task4/];

我会将已完成的任务保存在不同的哈希中,然后只是
my @prereq = @{ $prereq{$task} };
if (@prereq == grep exists $completed{$_}, @prereq) {
    run($task);
}

关于multithreading - 如何使用 Perl 并发处理部分任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8267620/

相关文章:

c# threading with manual reset 事件

java - 同步读可以用 volatile 字段修饰符代替吗?

c++ - 多线程:我需要用只读方法保护我的变量吗?

perl - 无法修改标量赋值中的常量项

perl - Perl的print如何默认添加换行符?

arrays - 自删除数组元素(一旦它们变得未定义)

java - 增加锁数量的最佳方法是什么?

java - javax.servlet.ServletContext set/getAttribute 线程安全吗?

c# - 如何模拟函数空间

multithreading - pthread rwlock从不同线程锁定/解锁