0

这是我的服务器代码:

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));

在上面的'async_read_some'调用的'handle_read_header'函数中,整个线程正在等待直到睡眠结束。因此,当另一个请求进来时,它不会被处理,直到睡眠结束。不是假设异步处理每个请求吗?我是 boost 和 C++ 的新手。如果我提到了任何错误,请告诉我。

4

1 回答 1

4

Read schedule withasync_read_some是在调用的线程中实现的io_service::run()。如果您只有一个线程,它将等待完成一个读取处理程序,然后再启动另一个

您可以通过运行更多线程io_service::run()或缩短读取处理程序的执行时间来创建线程池。

于 2012-06-18T06:58:16.013 回答