可以假设如果我对 async_read 进行两次调用,第二个调用将仅在第一个调用被处理后才被处理吗?
Is it safe to assume that if I make two calls to async_read, the second call will be processed only after the first is processed?
我正在通过网络发送一些数据,每个数据片段都有一个 header 由两部分组成:
- 数据类型
- 其余数据的长度。
我正在将数据类型读入一个变量,将长度读入另一个变量,因此这两个 async_read 调用。
我知道我可以链接 async_read 并且一切都应该正常工作,即首先读取消息类型,读取后,在其 async_read 处理程序中调用 async_read对于数据长度。
但是如果我不做这样的链接而只是做 async_read( data type ) 会怎么样? async_read(数据长度);. Boost 是否仅在第一个完成后才处理第二个 async_read()?
async_reads 在相同的 tcp 套接字和相同的 io_service object.
上被调用
不,这不是一个安全的假设。 async_read()
实现为对 async_read_some()
的多次调用,因此读取最终可以交错。
我正在通过网络发送一些数据,每个数据片段都有一个 header 由两部分组成:
- 数据类型
- 其余数据的长度。
我正在将数据类型读入一个变量,将长度读入另一个变量,因此这两个 async_read 调用。
我知道我可以链接 async_read 并且一切都应该正常工作,即首先读取消息类型,读取后,在其 async_read 处理程序中调用 async_read对于数据长度。
但是如果我不做这样的链接而只是做 async_read( data type ) 会怎么样? async_read(数据长度);. Boost 是否仅在第一个完成后才处理第二个 async_read()?
async_reads 在相同的 tcp 套接字和相同的 io_service object.
上被调用不,这不是一个安全的假设。 async_read()
实现为对 async_read_some()
的多次调用,因此读取最终可以交错。