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.