What I want to achieve is something like:

How can I implement something like this in (Open)MPI/C++?

Listen will be something similar to IRecv? But how do I cancel those IRecv later?