Предположим, что при вызове io_service :: run() запланировано несколько операций async_read (между ними могут быть другие операции). Что произойдет, когда асинхронная операция, такая как async_write, запланирована в функции ReadHandler?io_service :: run() порядок обработки функций async_ *
void handler(const boost::system::error_code& error, std::size_t bytes) {
async_write(sock, boost::asio::buffer(wbuf), whandler);
}
То есть, когда будет вызван async_write? я бы ожидать, что порядок исполнения быть:
1) async_read //1
2) async_write
3) async_read //2
4) async_write
Гарантирует ли это порядок исполнения?
Я не использую несколько async_reads, пример был просто быстро составлен. Одним из async_reads может быть другая операция async. Я вижу, могу ли я его отредактировать. –
@MariusHerzog Было бы хорошо видеть, что вы на самом деле имеете в виду. – inf
Я думаю, что я действительно имею в виду: при вызове run() запланировано несколько расписаний async_reads (между ними могут быть другие операции). Когда ReadHandler вызывает async_write, являются ли async_writes немедленно обработаны после завершения ReadHandler? –