Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://338181]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2018-06-18 23:33 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (111 votes). Check out past polls.