Допустим, у меня есть MPI process_0, ожидающий сообщений от двух разных процессов (process_1 и process_2). Примерно так:
...
MPI_Recv(&message_1, 1, MPI_INT, process_1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
MPI_Recv(&message_2, 1, MPI_INT, process_2, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
...
Представьте себе сценарий, в котором когда process_2 отправляет свое сообщение process_0, перед process_1. Что происходит тогда?
Я полагаю, что process_0 должен получить сообщение от process_1, прежде чем сможет прочитать сообщение от process_2?
Что происходит с функцией отправки в process_2? Будет ли она зависать в функции send, пытающейся доставить сообщение, пока process_0 не сможет ее получить? Или он отправит сообщение, не заботясь о том, получил ли process_0 его или нет, и продолжит выполнение последовательного кода после функции отправки?