我试图了解启动 io_serviceio_service::run()
与我的应用程序中的第一个异步操作的正确顺序,例如,async_accept
. 大多数 boost 示例似乎首先执行后者,不知道为什么。
boost 文档说明了以下几点:
您的程序必须调用 io_service::run() 才能检索结果。当有未完成的异步操作时,对 io_service::run() 的调用会阻塞,因此您通常会在开始第一个异步操作后立即调用它。
我从图中了解到,异步操作的结果通过队列传递给 io_service,除非 io_service 已经在运行,否则它不会从该队列中获取结果。所以说 io_service 应该总是首先启动是不是正确的。该文档似乎另有暗示。有人可以解释一下吗?