Regardless of library, language, or spec, asynchronous send/write operations make sense to me, because code later in the execution path may not have any dependency upon the success or failure of the write operation.
However, asynchronous receive/read operations are not motivated for me.
Can anyone suggest specific situations or general patterns where async message receipt is useful?
My question is prompted by the MPI specification, but the more general the answer the better. Specifically, there are blocking calls to communicate between processes or machines:
and there are analogous nonblocking calls that take an additional parameter
MPI_Request * parameter to handle the send/receive operations asynchronously: