Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 假设我对async_read进行了两次调用,那么第二次调用将仅在第一次调用处理之后处理,这是否安全?_C++_Boost Asio - Fatal编程技术网

C++ 假设我对async_read进行了两次调用,那么第二次调用将仅在第一次调用处理之后处理,这是否安全?

C++ 假设我对async_read进行了两次调用,那么第二次调用将仅在第一次调用处理之后处理,这是否安全?,c++,boost-asio,C++,Boost Asio,我通过网络发送了一些数据,每个数据块都有一个由两部分组成的头: 数据类型 数据块其余部分的长度 我将数据类型读入一个变量,将长度读入另一个变量,因此两个异步读取调用 我知道我可以链接async_读取,一切都应该正常工作,即首先读取消息类型,读取时,在其async_读取处理程序中,调用async_读取数据长度 但是如果我不做这样的链接,只做异步读取(数据类型),会怎么样;异步读取(数据长度);。Boost是否仅在第一个异步读取完成后才处理第二个异步读取() 异步读取在同一tcp套接字和同一io_服

我通过网络发送了一些数据,每个数据块都有一个由两部分组成的头:

  • 数据类型
  • 数据块其余部分的长度
  • 我将数据类型读入一个变量,将长度读入另一个变量,因此两个异步读取调用

    我知道我可以链接async_读取,一切都应该正常工作,即首先读取消息类型,读取时,在其async_读取处理程序中,调用async_读取数据长度

    但是如果我不做这样的链接,只做异步读取(数据类型),会怎么样;异步读取(数据长度);。Boost是否仅在第一个异步读取完成后才处理第二个异步读取()


    异步读取在同一tcp套接字和同一io_服务对象上调用。

    不,这不是一个安全的假设
    async\u read()
    实现为对
    async\u read\u some()
    的多个调用,因此读取结果可能是交错的。

    那么
    async\u write
    呢?看起来是一样的——多个
    async\u write\u some()
    调用。然后将不得不对写入进行排队。