Данные не гарантированно упорядочены, и если вы используете эти функции, вам следует дождаться обратного вызова, прежде чем писать снова.
(обсуждение в терминах async_write , также относится к async_read )
Поскольку async_write реализован в виде множественных вызовов функции базового потока async_write_some , эти вызовы не являются атомарными. Каждый вызов пытается записать данные в поток и имеет внутренний обратный вызов для обработки частичных операций, фактически ожидающих завершения, как вы могли бы написать самостоятельно. Таким образом, вы можете легко получить смешанные данные, если не дождетесь завершения.
Вы также должны учитывать темы. Если вы вызываете async_x в потоке несколько раз, вы можете получить параллельные операции с одним и тем же базовым потоком в разных потоках, что приведет к неопределенному поведению.