for(i=0; i<5; i++)
{
method1();
}
sub method1()
{
// here do something
}
这里我在for循环中调用了method1子例程。在这里,我希望在不等待先前调用的结果的情况下调用(并行)此method1子例程。怎么做 ?除了线程之外还有其他方法吗?
答案 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提供了一个协作式多任务系统,因此其他线程只有在当前的线程被阻塞等待事件时才有机会执行。