Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: Efficient non-blocking UDP server

by matija (Priest)
on Mar 19, 2004 at 21:32 UTC ( #338181=note: print w/ replies, xml ) Need Help??


in reply to Efficient non-blocking UDP server

You should only ever use polling if there is absolutely no other way to do it. Any (OK, almost any) other method is going to be more efficient.

Waiting at the socket isn't actually your biggest problem. Your problem is in the callback functions you're dispatching. If you can't guarantee that no callback function will use more than 1/100 of a second, you can't guarantee 100 messages per second in a single threaded server.

The easy way of doing such a server is to block waiting for a new packet, then spawn a thread (or a process) to handle it.

The more sophisticated servers (Apache, for instance) have dispatching mechanisms that apportion requests to pre-spawned processes so that the spawning doesn't delay processing.

Of course, the faster your server, the more complex is the dance required to keep all the components fed and synced.

I'm afraid that for Portable/Fast/Simple you will be lucky to get two out of three.


Comment on Re: Efficient non-blocking UDP server

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (10)
As of 2014-08-21 20:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (143 votes), past polls