I'm reading some of the answers regarding Asio and a pattern that stands out, both in examples and here in SO, is to use a single io_service and share it between workers that would handle opening, sending and receiving messages over sockets.
Are there any benefits in sharing an io_service between multiple socket abstractions? Why not let each have their own io_service?