0
在Daytime.3教程的boost :: ASIO(异步TCP服务器),类tcp_server
包含以下两种方法:在boost :: asio中,为什么异步接受处理程序需要重新启动异步接受?
void start_accept()
{
tcp_connection::pointer new_connection =
tcp_connection::create(acceptor_.get_io_service());
acceptor_.async_accept(new_connection->socket(),
boost::bind(&tcp_server::handle_accept, this, new_connection,
boost::asio::placeholders::error));
}
void handle_accept(tcp_connection::pointer new_connection,
const boost::system::error_code& error)
{
if (!error) new_connection->start(); // ***
start_accept();
}
我关心的是行标***
。如果此操作需要很长时间才能完成,该怎么办?即使没有,在***
行与start_accept
的呼叫之间必定有一段时间间隔,在此期间服务器将无法接受传入连接。 async_accept
注册一个操作系统处理程序在接受其第一个连接时不会停止是否更有意义?另外,这是一个真正的问题,我将如何解决它?