Boost logo

Boost Users :

Subject: Re: [Boost-users] [asio] multiple simultaneous async_read calls
From: bbxiong (bbxiong.xiao_at_[hidden])
Date: 2014-08-07 22:31:16

Hello, jason,
  from asio doc:
async_read will invoke handler one condition is true:
1. the supplied buffers are full.
2. an error occurred.

so if there is no socket error, async_read will return len1 bytes.

My question is, can we make simultaneous async_read calls on one socket,
will they interfere each other?


2014-08-08 10:17 GMT+08:00 Jason Roehm <jasonr_at_[hidden]>:

> On 08/07/2014 09:54 PM, bbxiong wrote:
>> Hello, all,
>> If i write some code like this:
>> boost::asio::async_read(socket_, bosot::asio::buffer(,
>> len1, handler1);
>> boost::asio::async_read(socket_, boost::asio::buffer(,
>> len2, handler2);
>> Will asio guarantee len1 bytes received by the first async_read, then
>> schedule async_read2?
>> or the result is undefined(like several bytes filled into buffer1, then
>> next several bytes into buffer, then next several bytes into buffer1)?
> I don't believe you're guaranteed that you will get `len1` bytes from the
> first read; it could be shorter. If you want to ensure that you get exactly
> that size in the first read, you should use the `transfer_exactly`
> completion condition:
> reference/transfer_exactly.html
> Jason
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at