I'm working on implementing a UDP server that dispatches messages to different callback functions, depending on the content. The problem is that I'm not sure which is the best way to implement a non-blocking server efficiently. My list of priorities (in this order):
- Portable - Should work on at least Mac OS X and Windows
- Fast - Ideally, I want to be able to process hundreds of messages per second in the background while the user is fiddling around with the GUI in the foreground
- Simple - Should be easy to understand and easily packaged in a module. Should be pure Perl.
Would it be more efficient to use IO::Socket in non-blocking mode and let the user call a $server->if_you_got_a_message_then_do_something() in a while loop (ie. polling) or should I use threading?