All you do is drop your thread code block into a forked child's code block.
Not recomended, but the simplest is:
if(fork() == 0){exec("command")}
but that dosn't watch for zombies, or limit the number of forks at any one time.
Usually, you do something like:
#!/usr/bin/perl
# There is a limit to the number of child processes you can
# have, or should want, so big jobs may require the kind of
# throttling Parallel::ForkManager gives you.
#The receipe for 100 processes:
#avoid zombies
$SIG{CHLD} = 'IGNORE'; # check if it works on your system
for (1..100) {
my $pid = fork;
next if $pid; # in parent, go on
warn($!), next
if not defined $pid; # parent, fork errored out
exec @cmd; # in child,
# go do @cmd and don't come back
}
There are a bunch of recipes around for limiting the number of forks running at any one time, but you are best off using Parallel::ForkManager See: controlling child processes
|