in reply to Parallel::ForkManager How to wait when 1st 10 Child processe are over out of 100

I have consistently found it most advantageous to start a fixed number of processes, then to have each of them consume “work to do” until there is no more work to be done.   (Then, they die off.)

For example, “launch 10 processes which, using a simple loop, each do (or execute...) a particular unit of work 100 times in a row.”   Or, as the case may be, they do the unit of work while() the value of some atomic global counter is greater than zero; or until some file or queue is empty.

A mechanism devised in this way is ... simple to construct; has an obvious and convenient “throttle;” and is entirely self-regulating.   Many human workflows are constructed in just this way.