...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.