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_read
、async_write
。这些功能 return 立即生效。
处理程序已排队,函数 returns,io_service::run
稍后处理此处理程序。
在您的情况下 asio::read
不会创建任何处理程序,它是阻塞函数,因此无需调用 io_service::run
.
我已经实现了一个连接到服务器并使用 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_read
、async_write
。这些功能 return 立即生效。
处理程序已排队,函数 returns,io_service::run
稍后处理此处理程序。
在您的情况下 asio::read
不会创建任何处理程序,它是阻塞函数,因此无需调用 io_service::run
.