2

主服务器有大量任务,它会将其分发给任何发出就绪信号的从服务器。

这些任务在计算时间上并不相等,但都在计算一些值。作为输出,master 需要计算所有任务中的最小值。

这里的问题是我不想使用同步 send-recv 调用来分发作业,因为我不想等待一个进程完成,然后再将作业发送到下一个进程。

那么,我怎样才能收集结果呢?我需要知道每个返回值才能返回最小值,但我不知道该值何时会被发送回主控器,或者以什么顺序。

谢谢你的帮助..

4

1 回答 1

4

在主服务器上使用非阻塞发送/接收,在从服务器上使用阻塞发送/接收。基本上:

掌握:

  1. 通过非阻塞发送发送作业。
  2. 为每个结果发布一个非阻塞接收
  3. 定期检查是否有任何结果。如果是这样,请发送一个新作业并为其发布一个非阻塞接收。
  4. 重复步骤 3。直到所有结果都已到达。

奴隶:

  1. 等待具有阻塞接收的作业
  2. 使用阻塞发送发送结果
  3. 转到 1。
于 2012-12-23T09:48:27.260 回答