I\'ve begun using Boost.ASIO for some simple network programming, my understanding of the library is not a great deal, so please bear with me and my newbie question.
At
This discussion may be enlightening:
http://thread.gmane.org/gmane.comp.lib.boost.asio.user/1300
I don't have the code right here, but why would you use multiple io_services? I thought it used one io_service and multiple threads executing run on that one io_service.
IIUC, each io_service owns a select/epoll/whatever queue, so having multiple io_services is akin to having multiple independent select/epoll loops. In some situations, eg. large numbers of sockets and multiple CPUs, this might help.
Something I'm less sure about is with multiple threads all running io_service::run (with the same io_service). I think this just means the handlers are run concurrently, while the select/epoll/etc. loop is 'shared'. I think this is best for when your handlers are relatively long-running operations.