in reply to Re^5: help with Parallel:ForkManager
in thread help with Parallel:ForkManager

Thanks. Now I really understand. But there is another question if I may. Suppose that instead of @command array, I have a list (array) of files, @files_list. In a loop, I open a file from the list, read through it, set some counters, close the file, then get the 2nd file from the list, do the same thing and so on. The processing of each file takes time, and I have a lot of files. So I use the parallel fork to start four children ($manager->start and next) where each child would process a file from a list. Between’ $manager->start and next’ and $manager->finish, I set some counters, say how many files could not be opened. That counter is not global to all the children, so my counter would not be accurate. My question is what do I do if I need a variable to be shared (or global) between all the children, so each child would be able to update the same variable. I don't want to store the counter in some temp file that I would be able to access after all children are finished. Thanks much.

Replies are listed 'Best First'.
Re^7: help with Parallel:ForkManager
by Anonymous Monk on Jan 13, 2010 at 21:39 UTC
Re^7: help with Parallel:ForkManager
by ikegami (Patriarch) on Jan 13, 2010 at 21:59 UTC

    You are looking to do interprocess communication. It's a very lengthy topic.

    It might be simpler to use threads (or forks's thread-like interface). You can create a pool of workers that take jobs from a queue. BrowserUk has made numerous posts on the subject.

    They can report their status back via another queue (or via a shared variable if we're talking about counter).

      OK, thanks for your help. I will look into this subject. Thanks.