我通过网络发送一些数据,每个数据都有一个包含两个内容的标题:
我将数据类型读入一个变量,将长度读入另一个变量,从而调用两个async_read。
我知道我可以链接async_reads并且一切都应该正常工作,即首先读取消息类型,当它被读取时,在其async_read处理程序中,调用async_read获取数据长度。
但是,如果我不进行此类链接并且只执行async_read(数据类型),该怎么办? async_read(数据长度);只有在第一个完成后,Boost才会处理第二个async_read()吗?
在同一个tcp套接字和同一个io_service对象上调用async_reads。
答案 0 :(得分:2)
不,这不是一个安全的假设。 async_read()
实现为对async_read_some()
的多次调用,因此读取最终可能会被交错。