asio:多个挂起的async_read?

时间:2016-05-08 10:06:00

标签: c++ asynchronous boost boost-asio

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

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

async_read怎么样?可以将多个async_read排队吗?如果是,是否保证执行顺序?

1 个答案:

答案 0 :(得分:2)

根据async_read(...)

的文件
  

此操作是根据对流的async_read_some函数的零次或多次调用实现的,并且称为组合操作。程序必须确保流不执行任何其他读取操作(例如async_read,流的async_read_some函数或执行读取的任何其他组合操作),直到此操作完成。

这意味着你不能在同一个流上启动任何进一步的async_read操作,直到调用完成处理程序(回调) - 当提供的缓冲区被填满时,这应该只有一次,满足完成条件,或发生一些错误。

你并不完全明白你的意思和排队"多个async_read操作。实现一系列async_read操作的方法是在完成处理程序中启动下一个操作。