我有一个方法可以为新连接启动一个新的 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();
}