in reply to Re^4: help with Parallel:ForkManager
in thread help with Parallel:ForkManager
You are a man of few words!
You said it was different than fork(), which meant you knew how fork() worked. I pointed out that it isn't different than fork().
Is that about right?
Up until the last sentence, only minor errors or clarifications need to be made:
When I do '$pm->start and next', it forks a child which takes the first argument of the @command arraygets a copy of the current process's memory space including $command and starts executing. At the same time, without waiting for the 1st child to finish, itthe parent forks another child that processes the 2nd argument of the array and so on, until 20 children are running in parallel. If 20 children already running, but there are still unprocessed elements in the array, it would wait until a child would finish and forkbefore forking another child.
But then you followed with:
The array is processed by children only, the parent doesn't go through the array.
It might depend on what you mean by "processed" and "go through", but that sounds completely backwards.
You just described how the parent forks a child for each array element and how each child processes only one element of the array.
Code executed in parent:
for my $command (@commands) { $manager->start and next; }
Code executed in child:
0 and next; exec( $command ); $manager->finish;
Note the lack of array in the code executed by the child?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: help with Parallel:ForkManager
by arthurs (Novice) on Jan 13, 2010 at 20:44 UTC | |
by Anonymous Monk on Jan 13, 2010 at 21:39 UTC | |
by ikegami (Patriarch) on Jan 13, 2010 at 21:59 UTC | |
by arthurs (Novice) on Jan 14, 2010 at 14:33 UTC |