auto io = std::make_sharedboost::asio::io_context(); CrowApp app(io); app.run(); io->run(); 什么意思,为什么要起2个run
时间: 2024-03-29 14:35:10 浏览: 204
st_asio_wrapper文档
这段代码是在使用 C++ 的 Boost 库来编写一个 Web 应用程序。其中 `auto io = std::make_shared<boost::asio::io_context>();` 创建了一个 `io_context` 对象,用于管理应用程序中的异步 IO 操作。接着,`CrowApp app(io);` 创建了一个 `CrowApp` 对象,并将上面创建的 `io_context` 对象传递给它,以便在应用程序中使用它来处理网络 IO。然后,`app.run();` 启动了应用程序的主循环,以便处理客户端的请求和响应。最后,`io->run();` 启动了 `io_context` 对象的事件循环,以便监听和处理来自客户端的网络请求和响应。需要注意的是,这两个 `run()` 方法并不是起到了相同的作用,而是分别负责应用程序逻辑和网络 IO 的处理,两者是相辅相成的关系。因此,在编写基于异步 IO 的应用程序时,通常需要同时启动这两个循环以实现完整的功能。
阅读全文