> MPI_WAIT/TEST(req, status) will return true/complete on the GR if
> MPI_MARK_REQUEST_COMPLETE has been called. This causes the
> complete_fn to be called with the status provided. complete_fn will
> finish before wait/test returns. On return, req is deallocated and
> the handle is null by setting it to MPI_REQUEST_NULL. By definition
> the req is now "inactive".
I guess the LaTex version will talk about the role of push_fn here.
> Interaction with handlers: If a handler and the complete_fn are both
> elegible to execute (for example, the GR finishes while a wait is
> active on the GR and a handler is attached to the GR) then MPI makes
> no statement about the order in which they will execute. If someone
> thinks we need to specify order and has a proposal I am open to this.
I didn't understand this. Isn't complete_fn called only when
MPI_Mark_request_complete is called? If a handler is used to detect
completion of the GR, the handler would have to call
MPI_Mark_request_complete, which would in turn call complete_fn. If
the user's program happens to be in an MPI_Wait at this time, it would
have to wait until the handler executes and eventually calls
MPI_Mark_request_complete.
Rajeev