Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: forks for running multiple codes at same time

by weismat (Friar)
on Feb 09, 2009 at 05:45 UTC ( #742355=note: print w/replies, xml ) Need Help??

in reply to forks for running multiple codes at same time

From my point of view you may consider to change to threads instead of fork.
Every fork call has a significant overhead.
Send all tasks on a queue and every thread reads from the queue and calls the wanted function.
  • Comment on Re: forks for running multiple codes at same time

Replies are listed 'Best First'.
Re^2: forks for running multiple codes at same time
by Eyck (Priest) on Feb 09, 2009 at 07:37 UTC

    This is untrue.

    This is only true for Win32, where the fork() call doesn't even really exists (it's poorly faked using threads), on every other platform fork() costs almost the same, and provides many valuable additional benefits (like better memory protection, better management etc etc)

    Not to mention, he's spawning only 5 (count'em - five) processes, what would be cummulative gain on that, even on win32?

      I agree that there is no difference if you would create as many threads as forked processes.
      The difference is that you need to call fork once for every planned task - whereas in a thread model you can share data and thus you would start threads only 5 times depending on the number of workers as the workers can get the data from a queue instead of a function parameter.
        In the OP case, where the final intend is to run an external command, the optimum solution would probably be to fork a new process and exec the command.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://742355]
[Discipulus]: it seems a legitimate one.. grin ..

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (7)
As of 2018-05-22 12:20 GMT
Find Nodes?
    Voting Booth?