如何并行运行子程序?

时间:2014-01-22 13:38:24

标签: perl parallel-processing

for(i=0; i<5; i++)
{
  method1();
}

sub method1()
    {
           // here do something
    }

这里我在for循环中调用了method1子例程。在这里,我希望在不等待先前调用的结果的情况下调用(并行)此method1子例程。怎么做 ?除了线程之外还有其他方法吗?

1 个答案:

答案 0 :(得分:6)

主题:

use threads;

for (0..4) {
    async { f() };
}

$_->join() for threads->list;

过程:

use forks;

for (0..4) {
    async { f() };
}

$_->join() for forks->list;

Coro线程:

use Coro;

my @threads;
for (0..4) {
    push @threads, async { f() };
}

$_->join() for @threads;

Coro提供了一个协作式多任务系统,因此其他线程只有在当前的线程被阻塞等待事件时才有机会执行。