1
for(i=0; i<5; i++)
{
method1();
}
sub method1()
{
// here do something
}
這裏我在for循環中調用了method1子例程。在這裏,我想調用這個method1子程序(並行),而不用等待前一次調用的結果。怎麼做 ?除了線程還有其他方法嗎?如何並行運行子程序?
for(i=0; i<5; i++)
{
method1();
}
sub method1()
{
// here do something
}
這裏我在for循環中調用了method1子例程。在這裏,我想調用這個method1子程序(並行),而不用等待前一次調用的結果。怎麼做 ?除了線程還有其他方法嗎?如何並行運行子程序?
主題:
use threads;
for (0..4) {
async { f() };
}
$_->join() for threads->list;
流程:
use forks;
for (0..4) {
async { f() };
}
$_->join() for forks->list;
科羅線程:
use Coro;
my @threads;
for (0..4) {
push @threads, async { f() };
}
$_->join() for @threads;
科羅提供coope這是一個多任務系統,所以其他線程只有在當前的線程被阻塞等待事件時纔有機會執行。
已添加到答案。 – ikegami
你可以使用fork或thread來做到這一點。 –
http://stackoverflow.com/a/16475586/223226 –
如果我把子程序寫成單獨的腳本,那麼通過調用另一個腳本以及如何做到這一點(Exec和system),可以滿足上述概念? –