C++ MPI中的非阻塞通信:消息顺序 如果处理器使用相同的标记将完全相同的消息发送到相同的目标,会发生什么情况?当接收者想要读取它时,它是否读取最后一个 如果两个不同的处理器向一个处理器发送相同的消息(相同的标签),该怎么办?它接收哪一个,按什么顺序接收

C++ MPI中的非阻塞通信:消息顺序 如果处理器使用相同的标记将完全相同的消息发送到相同的目标,会发生什么情况?当接收者想要读取它时,它是否读取最后一个 如果两个不同的处理器向一个处理器发送相同的消息(相同的标签),该怎么办?它接收哪一个,按什么顺序接收,c++,mpi,C++,Mpi,3-我们如何知道队列中有多少来自特定处理器的挂起消息,以便接收所有消息?我投票将此问题作为离题题来结束,因为此问题似乎非常理论化,至少应该有一个清晰的示例,最好有代码。马克:我不同意,你为什么不试试哲学呢。在MPI的上下文中,问题是有效的,并且有一个明确的答案:1:具有相同的标记和源的两条消息被发送到接收进程,该进程可以通过两次调用MPI\u Recv来接收这两条消息。2:它将以随机顺序接收这两个消息(取决于将首先启动两个消息传递操作中的哪一个)。标记参数不影响发送或接收哪些消息以及消息的顺序,

3-我们如何知道队列中有多少来自特定处理器的挂起消息,以便接收所有消息?

我投票将此问题作为离题题来结束,因为此问题似乎非常理论化,至少应该有一个清晰的示例,最好有代码。马克:我不同意,你为什么不试试哲学呢。在MPI的上下文中,问题是有效的,并且有一个明确的答案:1:具有相同的
标记和
源的两条消息被发送到接收进程,该进程可以通过两次调用
MPI\u Recv
来接收这两条消息。2:它将以随机顺序接收这两个消息(取决于将首先启动两个消息传递操作中的哪一个)。
标记
参数不影响发送或接收哪些消息以及消息的顺序,它只是提供了一种区分消息的机制。@mort这些问题是有效的,答案很清楚,但被问到了错误的地方。非常感谢@mort,我还有一个问题。。。我们如何知道有多少消息(同一标签)已由特定处理器发送,但尚未完成。。。在我的代码中,我知道worker A已发送(异步)三条消息,但主处理器不会看到它们并一直等待,但如果worker A通过“发送()”(阻塞)发送消息,它将及时接收它们!!