Perl - ответственный разветвление

Я недавно открыл для себя разветвление Perl, и мне это очень нравится. Но меня беспокоит одно - если я просто разделяю процессы на лево и право, наверняка это где-то вызовет какие-то проблемы. Есть ли разумная проверка, которую следует использовать, чтобы убедиться, что мое маленькое приложение не съедает все ресурсы моей машины?

Возьмите этот пример кода:

foreach my $command (@commands) {
   my $pid = fork();
   if (!$defined $pid) {
     #Fork failed. Do something.
   } elsif ($pid == 0) { #This is the child.
      system($command);
      exit(0)
   }
}

while (wait() != -1) {} #wait() will be -1 when the last child exits.

Так что это будет работать нормально, и порождает процесс для обработки каждой команды. Все будет происходить параллельно, и это здорово, если эти команды будут полностью независимыми.

Что, если мне вдруг придется выполнить более 5000 команд? Было бы неразумно отказываться от такого количества процессов. Итак, какую проверку нужно реализовать и как?

)

6
задан Jeremy 9 February 2012 в 07:44
поделиться