Отправляю данные в сеть через boost::asio через asinc_write(). Подскажите, если я после вызова этой функции, но до момента срабатывания обработчика, снова отправлю порцию данных через async_write, есть ли гарантия, что данные будут переданы в сеть последовательно и не перемешаются? Т.е. что сперва в сеть уйдут те данные, которые были в первом async_write, а только за ними данные из второго async_write?
Re: Boost Asio: последовательность асинхронной отправки данных
Здравствуйте, prrt, Вы писали:
P>Отправляю данные в сеть через boost::asio через asinc_write(). Подскажите, если я после вызова этой функции, но до момента срабатывания обработчика, снова отправлю порцию данных через async_write, есть ли гарантия, что данные будут переданы в сеть последовательно и не перемешаются? Т.е. что сперва в сеть уйдут те данные, которые были в первом async_write, а только за ними данные из второго async_write?
Когда делаете async_write, то вызывается стандартный API ОС для записи в сокет, а в очередь boost.asio
ставится обработчик, который вызывается потоком io_service после получения сигнала об отправке данных от
API асинхронного сетевого ввода/вывода ОС . Так что последоваетльный вызов двух write_async равносилен
последовательным вызовам стандартного send. А вот обработчик может быть вызван и ранее чем второй async_write,
если они вызываются не строго последовательно в стиле
async_write
async_write
Re[2]: Boost Asio: последовательность асинхронной отправки данных