asio:多个挂起的async_read



async_read在收到请求的字节数时调用回调。这可能意味着要多次调用async_read_some。

在文档中,指定最多可以有一个挂起的async_read_some。在发出下一个async_read_some之前,必须调用回调。

async_read呢?多个async_read可以排队吗?如果是,执行顺序是否得到保证?

根据async_read(...) 的文档

此操作是根据对流的async_read_some函数的零个或多个调用来实现的,称为组合操作。程序必须确保流在该操作完成之前不执行其他读取操作(如async_read、流的async_read_some函数或任何其他执行读取的组合操作)。

这意味着,在调用完成处理程序(回调)之前,您不能在同一流上启动任何进一步的async_read操作——这应该只有一次,当提供的缓冲区被填充、完成条件得到满足或出现一些错误时。

您并不完全清楚"排队"多个async_read操作是什么意思。实现async_read操作序列的方法是在完成处理程序中启动下一个操作。

最新更新