Forked counter process
examples/forks/ForkedCounter.pm
package ForkedCounter; use strict; use warnings; use Task; sub counter_one_by_one { my ($task_count, $max) = @_; for my $fork_id (1 .. $task_count) { my $pid = fork(); die "Could not fork" if not defined $pid; if (not $pid) { Task::count($max); exit; } } for my $fork_id (1 .. $task_count) { wait(); } } sub counter { my ($fork_count, $task_count, $max) = @_; my @tasks; push @tasks, 1+int($task_count/$fork_count) for 1 .. ($task_count % $fork_count); push @tasks, int($task_count/$fork_count) for 1 .. ($fork_count - ($task_count % $fork_count)); print "@tasks\n"; for my $fork_id (1 .. $fork_count) { my $pid = fork(); die "Could not fork" if not defined $pid; if (not $pid) { #print "PID $pid $tasks[$fork_id-1]\n"; for my $i (1..$tasks[$fork_id-1]) { Task::count($max); } exit; } } for my $fork_id (1 .. $fork_count) { wait(); } } 1;