threads
use strict;
use warnings;
use threads;
my $thr1 = threads->create(\&sub1,"yasai","kudamono");
my $thr2 = threads->create(\&sub1,"daikon","apple");
my @ReturnData1 = $thr1->join();
my @ReturnData2 = $thr2->join();
print("thread 1 returned ", join(', ', @ReturnData1), "\n");
print("thread 2 returned ", join(', ', @ReturnData2), "\n");
print("exit\n");
sub sub1(){
my ($data1, $data2) = @_;
for(1..3){
print("$data1 - $data2\n");
threads->yield();
sleep 1;
}
}
Parallel::ForkManager
use strict;
use warnings;
use Parallel::ForkManager;
my @datas = ("1","2","3","4");
my $pm = new Parallel::ForkManager(10);
foreach my $data (@datas){
$pm->start() and next;
for (1..100){
print($data."\n");
}
$pm->finish();
}
$pm->wait_all_children;