Probe parece consumir a CPU

Eu tenho um programa MPI que consiste em um processo mestre que distribui comandos para um monte de processos escravos. Ao receber um comando, um escravo apenas chama system () para fazer isso. Enquanto os escravos estão esperando por um comando, eles estão consumindo 100% de suas respectivas CPUs. Parece que o Probe () está em um loop apertado, mas isso é apenas um palpite. O que você acha que pode estar causando isso, e o que eu poderia fazer para consertar isso?

Aqui está o código no processo escravo que aguarda um comando. Assistindo o log e otopo comando ao mesmo tempo sugere que quando os escravos estão consumindo seus processadores, eles estão dentro desta função.

MpiMessage
Mpi::BlockingRecv() {
  LOG(8, "BlockingRecv");

  MpiMessage result;
  MPI::Status status;

  MPI::COMM_WORLD.Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, status);
  result.source = status.Get_source();
  result.tag = status.Get_tag();

  int num_elems = status.Get_count(MPI_CHAR);
  char buf[num_elems + 1];
  MPI::COMM_WORLD.Recv(
     buf, num_elems, MPI_CHAR, result.source, result.tag
  );
  result.data = buf;
  LOG(7, "BlockingRecv about to return (%d, %d)", result.source, result.tag);
  return result;
}

questionAnswers(2)

yourAnswerToTheQuestion