1

我必须为并行计算课程做一个练习。我使用 MPJ Express 将任务分配给多个进程(在我的例子中是 5 个进程)。我解决了所有工作正常的子任务。现在我想实现一个简单的用户对话框,以便我的教授可以选择他想要运行的子任务,例如“如果你想运行作业 1,请输入'1'。我使用以下代码从控制台读取输入:

 InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader(isr);
                System.out.println("Enter a number between 1 and 4");
                String s = br.readLine();

由于我必须使用 .bat 文件运行应用程序,该文件使用 5 个实例运行我的应用程序(每个进程一个实例),因此控制台输入不能“映射”到特定进程。所以我的应用程序在等待用户输入时一直挂起。

有没有人可以解决我如何克服这个问题?提前谢谢了!

4

1 回答 1

0

为什么不在 Scatter 操作上实现某种协议来分发用户的输入:例如,将收到的来自父进程的消息视为一对:(命令代码,命令数据)。在您的子进程中处理至少两个命令代码:

  1. 用于处理用户输入:检查当前进程 ID 是否与用户请求的执行相同 - 如果是 - 执行操作;
  2. 用于接收在应用程序启动时分发的数据。
于 2012-06-11T09:37:02.800 回答