X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2a48d6322f6b2ef7867b484e1f5820f0d4201be8..601b0b84937fb065edd43e83f755e2eae4a1de0e:/examples/async/Master.java diff --git a/examples/async/Master.java b/examples/async/Master.java index 88d6d1249e..dd4c313a8e 100644 --- a/examples/async/Master.java +++ b/examples/async/Master.java @@ -8,6 +8,10 @@ */ package async; +import java.util.ArrayList; + +import org.simgrid.msg.Comm; +import org.simgrid.msg.Process; import org.simgrid.msg.Msg; import org.simgrid.msg.MsgException; import org.simgrid.msg.Task; @@ -27,20 +31,39 @@ public class Master extends Process { int slavesCount = Integer.valueOf(args[3]).intValue(); Msg.info("Hello! Got "+ slavesCount + " slaves and "+tasksCount+" tasks to process"); - + ArrayList comms = new ArrayList(); + for (int i = 0; i < tasksCount; i++) { Task task = new Task("Task_" + i, taskComputeSize, taskCommunicateSize); - //Msg.info("Sending \"" + task.getName()+ "\" to \"slave_" + i % slavesCount + "\""); - task.send("slave_"+(i%slavesCount)); + Process p = task.getSender(); + Msg.info("Sending \"" + task.getName()+ "\" to \"slave_" + i % slavesCount + "\""); + //task.send("slave_"+(i%slavesCount)); + Comm comm = task.isend("slave_"+(i%slavesCount)); + comms.add(comm); } - + + while (comms.size() > 0) { + for (int i = 0; i < comms.size(); i++) { + try { + if (comms.get(i).test()) { + comms.remove(i); + i--; + } + } + catch (Exception e) { + e.printStackTrace(); + } + } + waitFor(1); + } + Msg.info("All tasks have been dispatched. Let's tell (asynchronously) everybody the computation is over, and sleep 20s so that nobody gets a message from a terminated process."); for (int i = 0; i < slavesCount; i++) { FinalizeTask task = new FinalizeTask(); task.dsend("slave_"+(i%slavesCount)); } - simulatedSleep(20); + waitFor(20); Msg.info("Goodbye now!"); }