Either libuv or Boost.Asio should be fine. I have observed similar results between the libraries in both real-time and near-real-time applications.
If you do use Boost.Asio, be aware of:
- How to minimize the amount of handler memory allocation.
io_service
locking can be eliminated by providing a concurrency_hint of 1 to theio_service
constructor. However, this will not prevent locking within the reactor.
From my experience with game development:
- If the network capabilities are provided to the game code through either an interface or queue, then it is fairly trivial to swap between one event-based library to another event-based library, such as Boost.Asio and libuv.
- The server architecture has far more of an impact than the network code itself. Both Boost.Asio and libuv provide IPC functionality that may be useful for multi-daemon server architectures.
While there is some overlap between the two libraries, it may be worthwhile to read this comparison.