这是我的服务器代码:
socket_.async_read_some(boost::asio::buffer(data_read.data(), Message::header_length),
boost::bind(&TcpConnection::handle_read_header, shared_from_this(),
boost::asio::placeholders::error));
如果我在循环中写下以下代码
boost::thread::sleep(boost::posix_time::seconds(2));
在'handle_read_header'函数中,由上面的'async_read_some'调用,整个线程一直等到睡眠结束。因此,当另一个请求进入时,它将在睡眠结束前处理。是不是假设异步处理每个请求?我是boost和C ++的新手。如果我提到任何错误,请告诉我。
答案 0 :(得分:3)
在async_read_some
的线程中实现了使用io_service::run()
进行的预定读取。
如果你只有一个线程它将等待完成一个读处理程序,然后再开始另一个。
您可以通过使用io_service::run()
运行更多线程来创建线程池,或者使读取处理程序的执行更短。