#Hash of Child PIDs our %ChildPids; #my $MaxThreadsAtOneTime = 5; #my $MaxThreadsAtOneTime = 2; my $MaxThreadsAtOneTime = 1; my $ThreadsToRun = 50; #### MAIN # Submit first group of children print("Submitting first batch of children\n"); my $ThreadNum = 0; while (($ThreadNum < $MaxThreadsAtOneTime) && ($ThreadNum < $ThreadsToRun)) { $ThreadNum++; my $ChildPid; if ($ChildPid = fork) { # parent code # Collect pid print("Parent found Child $ThreadNum with pid $ChildPid\n"); $ChildPids{$ChildPid} = $ThreadNum; } elsif (defined $ChildPid) { # child code print(" Child pid $$ checking in as thread $ThreadNum\n"); my $SleepTime = int(rand(30)); print(" Child pid $$ sleeping for $SleepTime seconds\n"); sleep $SleepTime; print(" Child pid $$ exiting\n"); exit(); } }