gpt4 book ai didi

c++ - 在这个 boost asio 示例中,为什么 io_service 在调用 .async_accept 之后启动

转载 作者:行者123 更新时间:2023-11-27 23:09:35 25 4
gpt4 key购买 nike

问题很简单(我的boost asio知识真的很烂,所以可能是微不足道的):
http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html

为什么 io_service 在我们已经执行了执行 async_accept 的 ctor 之后 启动?

最佳答案

io_service::run() 函数会阻塞,直到所有工作都完成并且没有更多的处理程序要分派(dispatch)。如果 io_service::run() 无事可做,它会立即返回。所以你需要在开始之前提供一些工作。就像它在 boost 示例中所做的那样:

{
boost::asio::io_service io_service;
tcp_server server(io_service); // <-- prepares async task
io_service.run(); // <-- blocks
} // <-- all done

好的,让我们尝试在 tcp_server 实例化之前调用 run

{
boost::asio::io_service io_service;
io_service.run(); // <-- returns immediately
tcp_server server(io_service); // <-- prepares async task
} // <-- async task is cancelled (or its result is lost)

关于c++ - 在这个 boost asio 示例中,为什么 io_service 在调用 .async_accept 之后启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21089391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com