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

juz*_*lin 1 c++ boost boost-asio

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

有点像这样:

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

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

raf*_*x07 5

io_service::run进程处理程序。处理程序是由在异步模式下工作的函数创建的,例如async_read, async_write。这些函数立即返回。处理程序排队,函数返回,io_service::run稍后处理该处理程序。在您的情况下asio::read,不会创建任何处理程序,它是阻塞函数,因此无需调用io_service::run.