Я недавно открыл для себя разветвление 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 команд? Было бы неразумно отказываться от такого количества процессов. Итак, какую проверку нужно реализовать и как?
)