如果我对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?
我正在通过网络发送一些数据,每个数据段都有一个由两部分组成的头:
- 数据类型
- 数据段其余部分的长度
我将数据类型读取到一个变量中,将长度读取到另一个变量,从而读取两个async_read调用。
我知道我可以链接async_read,一切都应该正常,即首先读取消息类型,当它被读取时,在其async_readhandler中,调用async_reads获取数据长度。
但是,如果我不做这样的链接,只做async_read(数据类型)呢;async_read(数据长度);。Boost是否只会在第一个async_read()完成后才处理第二个?
async_read是在同一个tcp套接字和同一个io_service对象上调用的。
async_read()
被实现为对async_read_some()
的多个调用,因此读取可能最终被交错。
相关文章:
- 为什么我的 IExtractIcon 处理程序没有被调用?
- 如何使用对C函数和类对象的外部调用来处理C++头文件
- 处理类内的回调时,必须调用对非静态成员函数的引用
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- 未调用 signal() 指定的处理程序
- 如何调用处理程序
- Java(或C++)如何处理接口中定义的方法的调用
- ESP-CoAP 服务器调用资源处理程序,不接收包
- 是否有可以处理方法调用依赖关系的设计模式?
- 异步操作的 Asio 处理程序在其同步对应项正常工作时不会调用
- cmake:生成批处理文件调用cl.exe
- boost::asio 使用 post() 时没有调用处理程序,当直接调用函数时有效(io_context有工作)
- Boost ASIO UDP 套接字async_receive_from不调用处理程序
- Asio在包含处理程序的类被破坏后调用处理程序
- boost::asio::tcp::socket 关闭并取消而不调用处理程序
- 使用系统调用处理退出状态
- boost::asio::d eadline_timer renew仍然调用处理程序函数
- 调用处理程序数据的垃圾收集
- boost::asio::d eadline_timer 不调用处理程序
- 当 asio::async_write 不调用处理程序时该怎么办?