Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: forks for running multiple codes at same time

by weismat (Friar)
on Feb 09, 2009 at 05:45 UTC ( [id://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.

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?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://742355]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2024-03-28 23:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found