22 Request(MPI_Request* r) : request(r) {};
39 bool operator==(
const MPI_Request* r)
const {
return r == request; }
42 return complete || request ==
nullptr || *request == MPI_REQUEST_NULL;
47 ret = MPI_Test(request, &complete, ret);
48 if (ret != MPI_SUCCESS) complete =
true;
54 ret = MPI_Wait(request, ret);
59 if (!is_complete()) MPI_Request_free(request);
62 bool done() {
return test(); }
63 void resume() { test(); }
73 complete = r.complete;
77 MPI_Request* request =
nullptr;