XBT_INFO("Goodbye now!");
}
+static void test_cancel(double computation_amount)
+{
+ XBT_INFO("Hello! Execute %g flops, should take 1 second", computation_amount);
+ simgrid::s4u::ExecPtr activity = simgrid::s4u::this_actor::exec_async(computation_amount);
+ simgrid::s4u::this_actor::sleep_for(0.5);
+ XBT_INFO("I changed my mind, cancel!");
+ activity->cancel();
+
+ XBT_INFO("Goodbye now!");
+}
+
int main(int argc, char* argv[])
{
simgrid::s4u::Engine e(&argc, argv);
e.load_platform(argv[1]);
simgrid::s4u::Actor::create("test", simgrid::s4u::Host::by_name("Fafard"), test, 7.6296e+07, 1.0);
simgrid::s4u::Actor::create("test", simgrid::s4u::Host::by_name("Fafard"), test, 7.6296e+07, 2.0);
+ simgrid::s4u::Actor::create("test_cancel", simgrid::s4u::Host::by_name("Boivin"), test_cancel, 98.095e+07);
e.run();
$ $SG_TEST_EXENV ${bindir:=.}/s4u-exec-async$EXEEXT ${platfdir}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:test@Fafard) Hello! Execute 7.6296e+07 flops with priority 1
> [ 0.000000] (2:test@Fafard) Hello! Execute 7.6296e+07 flops with priority 2
+> [ 0.000000] (3:test_cancel@Boivin) Hello! Execute 9.8095e+08 flops, should take 1 second
+> [ 0.500000] (3:test_cancel@Boivin) I changed my mind, cancel!
+> [ 0.500000] (3:test_cancel@Boivin) Goodbye now!
> [ 1.500000] (2:test@Fafard) Goodbye now!
> [ 2.000000] (0:maestro@) Simulation time 2
> [ 2.000000] (1:test@Fafard) Goodbye now!
XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example");
-static int executor(std::vector<std::string> /*args*/)
+static void executor()
{
/* this_actor::execute() tells SimGrid to pause the calling actor
* until its host has computed the amount of flops passed as a parameter */
XBT_INFO("Done.");
/* This simple example does not do anything beyond that */
- return 0;
}
-static int privileged(std::vector<std::string> /*args*/)
+static void privileged()
{
/* This version of this_actor::execute() specifies that this execution
* gets a larger share of the resource.
* because the uneven sharing only last until the privileged actor ends.
* After this point, the unprivileged one gets 100% of the CPU and finishes
* quite quickly. */
- return 0;
}
int main(int argc, char* argv[])
e.load_platform(argv[1]);
- simgrid::s4u::Actor::create("executor", simgrid::s4u::Host::by_name("Tremblay"), executor, args);
- simgrid::s4u::Actor::create("privileged", simgrid::s4u::Host::by_name("Tremblay"), privileged, args);
+ simgrid::s4u::Actor::create("executor", simgrid::s4u::Host::by_name("Tremblay"), executor);
+ simgrid::s4u::Actor::create("privileged", simgrid::s4u::Host::by_name("Tremblay"), privileged);
e.run();