Welche Methode oder Idee sollte ich für die Simulation der folgenden Situation verwenden.SimGrid. Wie empfange und sende ich Daten während der Ausführung der Aufgabe?
Es gibt Master, Worker1 (Host1) und Worker2 (Host2). Momentan führt workers1 einige Daten aus, aber worker2 ist frei. Master muss instruction
an worker2 senden, um Daten von worker1 herunterzuladen und mit der Ausführung zu beginnen.
Die Idee war messageTask
vom Master zum worker2 senden -> worker2 messageTask
zu worker1 sendet -> worker1 sendet task(name, flopsamount, byteSize)
zu worker2 -> worker2 und führt sie empfängt.
Aber wie kann worker1 messageTask
von worker2 erhalten, wenn worker1 beschäftigt ist, indem er seine task
ausführt? Wie kann worker1 Daten senden, während er eine Aufgabe ausführt? Oder gibt es vielleicht eine andere Methode für worker2, Daten von beschäftigtem worker1 herunterzuladen?
AKTUALISIERT Dies ist ein Stück Code für worker2.
MessageTask messageTask = new MessageTask();
messageTask.dsend(mailbox_worker1)
Für worker1
try {
task.execute(); // Currently worker1 is here, in other words, worker1 is exectuing some another task
} catch (TaskCancelledException e) {
}
Wie worker1 wird receive
messageTask und send
zurück realen Daten worker2 (ohne Unterbrechung seiner aktuellen Aufgabe ausgeführt wird)?
AKTUALISIERT
Ist es richtig deployment.xml?
<process host="Tier1_1" function="LHCb.Process1">
<argument value="1"/> <!-- Input mailbox -->
</process>
<process host="Tier1_1" function="LHCb.Process2">
<argument value="1"/> <!-- Input mailbox -->
</process>
Ich aktualisierte Frage. –
ist es korrekt. XML-Deklaration im aktualisierten Teil? –
Das ist nicht die gleiche Frage. Bitte schreibe eine Frage pro Idee, oder die Antworten werden für den nächsten kommenden Typen schwer zu verstehen sein. (aber ja, die Bereitstellung scheint in Ordnung). –