static int Request::Testsome(int \fIincount\fP, Request
\fIarray_of_requests\fP[], int \fIarray_of_indices\fP[], Status \fIarray_of_statuses\fP[])
static int Request::Testsome(int \fIincount\fP, Request
\fIarray_of_requests\fP[], int \fIarray_of_indices\fP[])
.SHINPUTPARAMETERS
.ftR
.TP1i
incount
Length of array_of_requests (integer).
.TP1i
array_of_requests
Array of requests (array of handles).
.SHOUTPUTPARAMETERS
.ftR
.TP1i
outcount
Number of completed requests (integer).
.TP1i
array_of_indices
Array of indices of operations that completed (array of integers).
.TP1i
array_of_statuses
Array of status objects for operations that completed (array of status).
.ftR
.TP1i
IERROR
Fortran only: Error status (integer).
.SHDESCRIPTION
.ftR
Behaves like MPI_Waitsome, except that it returns immediately. If no operation has completed it returns outcount = 0. If there is no active handle in the list, it returns outcount = MPI_UNDEFINED.
.sp
MPI_Testsome is a local operation, which returns immediately, whereas MPI_Waitsome blocks until a communication completes, if it was passed a list that contains at least one active handle. Both calls fulfill a fairness requirement: If a request for a receive repeatedly appears in a list of requests passed to MPI_Waitsome or MPI_Testsome, and a matching send has been posted, then the receive will eventually succeed unless the send is satisfied by another receive; send requests also fulfill this fairness requirement.
.sp
Errors that occur during the execution of MPI_Testsome are handled as for
MPI_Waitsome.
.sp
If your application does not need to examine the \fIarray_of_statuses\fP field, you can save resources by using the predefined constant MPI_STATUSES_IGNORE can be used as a special value for the \fIarray_of_statuses\fP argument.
.SHNOTES
The use of MPI_Testsome is likely to be more
efficient than the use of MPI_Testany. The former returns information on all completed communications; with the latter, a new call is required for each communication that completes.
.sp
A server with multiple clients can use MPI_Waitsome so as not to starve any client. Clients send messages to the server with service requests. The server calls MPI_Waitsome with one receive request for each client, then handles all receives that have completed. If a call to MPI_Waitany is used instead, then one client could starve while requests from another client always sneak in first.