新しい接続用に新しい std::thread を起動するメソッドがあるので、データを読み取ったり、他のことを実行したりできます。スレッドが呼び出すメソッドは、(boost 関数を使用して) 非同期の方法で読み取りを実行し、呼び出すと返されますasync_read_some
。私の質問は次のとおりです。
コールバックを処理するスレッドは? への呼び出しを行ったのは同じスレッドですか、async_read_some
それとも呼び出して戻った後にそのスレッドが終了し、現在はメインスレッドが読み取りを処理していますか?
コード スニペットを次に示します。
connection::connection_thread = std::thread(&connection::read_header,
this);
connection::connection_thread.detach();
.
.
.
void connection::read_header() {
socket_.async_read_some(boost::asio::buffer(headbuf_),
strand_.wrap(
boost::bind(&connection::on_header_read, shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred)));
begin_timeout();
}