platform.xmlファイルでホストの機能の存在を宣言された二つのタスク:SimGrid。同時受信
<host id="Tier1_1" core="2" speed="100f"/>
worker
プロセスがこのホストに住んでいます。 作業者は2つのタスクを同時に受信して実行できます(コア数が2の場合)。 私はこのようなコードを使用しますが、この場合は動作しません(このコードは同時に2つのタスクを受け取ることはできません)。
while(true) {
commReceived = Task.irecv("Tier1_" + num);
commReceived.waitCompletion();
if (commReceived.test()){
task = commReceived.getTask();
commReceived = null;
Msg.info("Receive " + task.getName());
task.execute();
Msg.info("End to execute " + task.getName());
}
UPD:
今、私はこのコードを使用します。同じメールボックス "Tier1_2"を持つ2つのプロセスがあります。私は、メールボックス( "Tier1_2")にisend
で送信します。
for (int j=0; j<2; j++){
Process process = new Process(getHost().getName(), "Tier1_2_" + j) {
@Override
public void main(String[] strings) throws MsgException {
while (true){
commReceived = Task.irecv("Tier1_2");
commReceived.waitCompletion();
if (commReceived.test()){
task = commReceived.getTask();
commReceived = null;
Msg.info("Receive " + task.getName());
}
}
}
};process.start();
}
しかし、それは与える:
Exception in thread "Thread-5" java.lang.NullPointerException
at LHCb.Tier1$1.main(Tier1.java:46)
at org.simgrid.msg.Process.run(Process.java:338)
私はプロセスを宣言する必要がありますどのように正しく?
何が問題なのですか?あなたが受け取ったエラーを表示できますか? –