boost::asio::io_service::run() 实际上做了什么?

What does boost::asio::io_service::run() actually do?

我已经实现了一个连接到服务器并使用 boost::asio::read()boost::asio::write() 调用的 TCP 套接字客户端。

有点像这样:

https://www.boost.org/doc/libs/1_63_0/doc/html/boost_asio/example/cpp11/chat/chat_client.cpp

但是,在我的实现中,我根本没有调用 boost::asio::io_service::run() 并且套接字 reads/writes 仍然有效。在套接字客户端的上下文中,该服务的目的是什么?我需要 运行 服务吗?

io_service::run 进程处理程序。处理程序由有效的函数创建 在异步模式下,如 async_readasync_write。这些功能 return 立即生效。 处理程序已排队,函数 returns,io_service::run 稍后处理此处理程序。 在您的情况下 asio::read 不会创建任何处理程序,它是阻塞函数,因此无需调用 io_service::run.