...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
In this library, asynchronous socket operations are
those member functions having prefix async_
.
For an object s
, a program may initiate asynchronous socket
operations such that there are multiple simultaneously outstanding asynchronous
operations.
When there are multiple outstanding asynchronous read
operations on s
:
— having no argument flags
of type socket_base::message_flags
,
or
— having an argument flags
of type socket_base::message_flags
but where (flags & socket_base::message_out_of_band) == 0
then the buffers
are filled in the order in which these operations
were issued. The order of invocation of the completion handlers for these
operations is unspecified.
When there are multiple outstanding asynchronous read
operations on s
having an argument flags
of type socket_base::message_flags
where (flags &
socket_base::message_out_of_band) != 0
then the buffers
are filled in the order in which these operations were issued.
When there are multiple outstanding asynchronous write
operations on s
, the buffers
are transmitted
in the order in which these operations were issued. The order of invocation
of the completion handlers for these operations is unspecified.