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