Есть такой пример:#!/usr/bin/perl
use threads;
my @thread = ();
for (my $i = 0; $i <= 2; $i++) {
$thread[$i] = threads->new(\&pearl_thread, $i);
print "Создана $i-я нить. TID=", $thread[$i]->tid, "\n";
}
for (my $i = 2; $i >= 0; $i--) {
print "$i-я нить вернула ", $thread[$i]->join, "\n";
}
sub pearl_thread ($) {
my $number = shift;
my $random = int(rand(7)) + 1;
print "\t$number-я нить ждет $random сек.\n";
sleep $random;
return $random;
}
он порождает 3 нити они выполняются параллельно, потом он чекает ответ и всё прекрасно, но как быть если нитей нужно отработать несколько десятков тысяч, если их все запустить сразу то скрипт вывалиться с сегментацией памяти оно и понятно, мало того так не нужно, как сделать так чтобы постоянно выполнялось одновременно по 100, и до тех пор пока не выполняться все 100 000???
то есть первый раз запущено 100 нитей, как только отработала 1 нить из 100, запускается 101 и так далее.
и ещё один момент, не очень удобно, если одна нить повисла, то программа будет ждать пока она не завершиться, как отлавливать что нить завершилась?
не могу сделать решение уже второй день, но очень нужно, помогите кто чем может :)