在MPI_Recv之后使用空条件while循环是否合理?

在MPI_Recv之后使用空条件while循环是否合理?,c,mpi,C,Mpi,在MPI_Recv之后使用空while循环等待另一个处理器发送结果是否合理?我希望确保处理器在完全接收结果之前不会继续运行,如下所示: int recvBuffer = 0; MPI_Recv(&recvBuffer, 1, MPI_INT, src, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); // recvBuffer expects to receive an integer greater than 0 while(recvBuffer ==

MPI_Recv
之后使用空
while
循环等待另一个处理器发送结果是否合理?我希望确保处理器在完全接收结果之前不会继续运行,如下所示:

int recvBuffer = 0;

MPI_Recv(&recvBuffer, 1, MPI_INT, src, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); // recvBuffer expects to receive an integer greater than 0
while(recvBuffer == 0);
sum+= recvBuffer;

不,这一点都不合理,严格说来也不起任何作用。这是一个阻塞接收。
您应该做的是检查函数的返回。这会给你一个错误提示。

不,这一点都不合理,严格来说没有任何作用。这是一个阻塞接收。
您应该做的是检查函数的返回。这表明您有错误。

谢谢您的回复。我怎么知道MPI_Recv是否真的收到了什么?我可以看一个如何按照您的建议测试返回值的示例吗。谢谢,正如我所说,这是一个阻拦电话。它不会返回到调用函数,除非接收到某些内容。最好在手册页面中查找函数可能返回的错误,然后对这些错误采取相应的行动。为了完整性,我们要补充一点,即使在非阻塞接收之后,这也不是一个好主意,您仍然需要使用
MPI\u Wait*
来完成。感谢您的回复。我怎么知道MPI_Recv是否真的收到了什么?我可以看一个如何按照您的建议测试返回值的示例吗。谢谢,正如我所说,这是一个阻拦电话。它不会返回到调用函数,除非接收到某些内容。最好在手册页面中查找函数可能返回的错误,然后对这些错误采取相应的行动。为了完整性,我们补充一点,即使在非阻塞接收之后,这也不是一个好主意,您仍然需要使用
MPI\u Wait*
来完成。