X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b02538071ffda15d09efbe85f1459e2c4688f68d..ecd5f7562caf1d443bf22788fa5f4fac408776ec:/examples/s4u/actor-kill/s4u-actor-kill.cpp?ds=sidebyside diff --git a/examples/s4u/actor-kill/s4u-actor-kill.cpp b/examples/s4u/actor-kill/s4u-actor-kill.cpp index e6a77aaf7f..fe726b40ae 100644 --- a/examples/s4u/actor-kill/s4u-actor-kill.cpp +++ b/examples/s4u/actor-kill/s4u-actor-kill.cpp @@ -7,8 +7,15 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor_kill, "Messages specific for this s4u example"); +static int on_exit(void*, void*) +{ + XBT_INFO("I have been killed!"); + return 0; +} + static void victim() { + simgrid::s4u::this_actor::onExit(on_exit, nullptr); XBT_INFO("Hello!"); XBT_INFO("Suspending myself"); simgrid::s4u::this_actor::suspend(); /* - Start by suspending itself */ @@ -24,11 +31,16 @@ static void killer() simgrid::s4u::Actor::createActor("victim", simgrid::s4u::Host::by_name("Fafard"), victim); simgrid::s4u::this_actor::sleep_for(10); /* - Wait for 10 seconds */ - XBT_INFO("Resume process"); /* - Resume it from its suspended state */ + XBT_INFO("Resume the victim"); /* - Resume it from its suspended state */ poor_victim->resume(); + simgrid::s4u::this_actor::sleep_for(2); - XBT_INFO("Kill process"); /* - and then kill it */ + XBT_INFO("Kill the victim"); /* - and then kill it */ poor_victim->kill(); + simgrid::s4u::this_actor::sleep_for(1); + + XBT_INFO("Killing everybody but myself"); + simgrid::s4u::Actor::killAll(); XBT_INFO("OK, goodbye now. I commit a suicide."); simgrid::s4u::this_actor::kill(); @@ -38,17 +50,20 @@ static void killer() int main(int argc, char* argv[]) { - simgrid::s4u::Engine* e = new simgrid::s4u::Engine(&argc, argv); + simgrid::s4u::Engine e(&argc, argv); xbt_assert(argc == 2, "Usage: %s platform_file\n\tExample: %s msg_platform.xml\n", argv[0], argv[0]); - e->loadPlatform(argv[1]); /* - Load the platform description */ + e.loadPlatform(argv[1]); /* - Load the platform description */ /* - Create and deploy killer process, that will create the victim process */ simgrid::s4u::Actor::createActor("killer", simgrid::s4u::Host::by_name("Tremblay"), killer); + simgrid::s4u::Actor::createActor("Alice", simgrid::s4u::Host::by_name("Jupiter"), victim); + simgrid::s4u::Actor::createActor("Bob", simgrid::s4u::Host::by_name("Ginette"), victim); + simgrid::s4u::Actor::createActor("Carol", simgrid::s4u::Host::by_name("Bourassa"), victim); + simgrid::s4u::Actor::createActor("Dave", simgrid::s4u::Host::by_name("Boivin"), victim); - e->run(); /* - Run the simulation */ + e.run(); /* - Run the simulation */ - XBT_INFO("Simulation time %g", e->getClock()); + XBT_INFO("Simulation time %g", e.getClock()); - delete e; return 0; }