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

时间:2019-01-29 07:27:59

标签: 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(),并且套接字读取/写入仍然有效。在套接字客户端的上下文中该服务的目的是什么?我需要运行该服务吗?

1 个答案:

答案 0 :(得分:4)

io_service::run处理处理程序。处理程序由起作用的函数创建 以async_readasync_write之类的异步模式运行。这些函数立即返回。 处理程序已排队,函数返回,io_service::run随后处理此处理程序。 在您的情况下,asio::read没有创建任何处理程序,而是阻塞了函数,因此无需调用io_service::run