0

我有 2 个进程,一个进程将数据包流式传输到另一个进程,直到内部中断停止该进程(发送的进程)。我希望有一种机制,其他进程可以接收,直到此通道上有任何消息要接收。

除了将停止命令也作为消息传输之外,还有什么方法可以做到这一点?我不希望将完成/中断作为另一条消息发送,因为在某些情况下中断可能会杀死发送方进程。

if (world.rank() != 0) {
  while (!interrupt())
    world.send(ROOT, ID, a, bufferSize);
  // I prefer not to send finish/interrupt as another message
 }
 else {
  while (/*there is any packet to be received*/)
    world.recv(boost::mpi::any_source, ID, a, bufferSize);
}
4

1 回答 1

1

如果其中一个MPI_COMM_WORLD进程终止,则无法正确继续应用程序。发送停止命令并让发送者保持活动状态绝对是您应该做的。

从理论上讲,您可以在 MPI 中使用单向通信或超时机制(使用irecv/ request::cancel),但我认为这没有任何意义。

于 2016-06-29T21:48:04.510 回答