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
註冊一個操作系統處理程序在接受其第一個連接時不會停止是否更有意義?另外,這是一個真正的問題,我將如何解決它?