Boost Asio: последовательность асинхронной отправки данных
От: prrt  
Дата: 31.05.15 09:41
Оценка:
Отправляю данные в сеть через boost::asio через asinc_write(). Подскажите, если я после вызова этой функции, но до момента срабатывания обработчика, снова отправлю порцию данных через async_write, есть ли гарантия, что данные будут переданы в сеть последовательно и не перемешаются? Т.е. что сперва в сеть уйдут те данные, которые были в первом async_write, а только за ними данные из второго async_write?
Re: Boost Asio: последовательность асинхронной отправки данных
От: smeeld  
Дата: 31.05.15 10:22
Оценка:
Здравствуйте, 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: последовательность асинхронной отправки данных
От: prrt  
Дата: 31.05.15 17:27
Оценка:
Ясно. Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.