X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/149c63f36e15b8500b1e826bda5138318ff7ba2b..2c0aa88e3d941e79fc79d39e3e58224d282b76d3:/examples/s4u/maestro-set/s4u-maestro-set.cpp diff --git a/examples/s4u/maestro-set/s4u-maestro-set.cpp b/examples/s4u/maestro-set/s4u-maestro-set.cpp index 65162cba47..8188c9c5fd 100644 --- a/examples/s4u/maestro-set/s4u-maestro-set.cpp +++ b/examples/s4u/maestro-set/s4u-maestro-set.cpp @@ -6,7 +6,7 @@ /** @addtogroup S4U_examples * * - maestro-set/maestro-set.cpp: Switch the system thread hosting our maestro. - * That's a very advanced example in which we move the maestro thread to another process. + * That's a very advanced example in which we move the maestro context to another system thread. * Not many users need it (maybe only one, actually), but this example is also a regression test. * * This example is in C++ because we use C++11 threads to ensure that the feature is working as @@ -40,7 +40,7 @@ static void ensure_other_tid() static void sender() { ensure_root_tid(); - std::string* payload = new std::string("some message"); + auto* payload = new std::string("some message"); simgrid::s4u::Mailbox::by_name("some mailbox")->put((void*)payload, 10e8); } @@ -48,7 +48,7 @@ static void receiver() { ensure_other_tid(); - const std::string* payload = static_cast(simgrid::s4u::Mailbox::by_name("some mailbox")->get()); + const auto* payload = static_cast(simgrid::s4u::Mailbox::by_name("some mailbox")->get()); XBT_INFO("Task received"); delete payload; } @@ -65,7 +65,10 @@ int main(int argc, char* argv[]) { root_id = std::this_thread::get_id(); + /* Specify which code should be executed by maestro on another thread, once this current thread is affected to an + * actor by the subsequent sg_actor_attach(). This must be done before the creation of the engine. */ SIMIX_set_maestro(maestro, NULL); + simgrid::s4u::Engine e(&argc, argv); if (argc != 2) { @@ -75,16 +78,16 @@ int main(int argc, char* argv[]) e.load_platform(argv[1]); - /* Become one of the simulated process. - * - * This must be done after the creation of the platform because we are depending attaching to a host.*/ + /* Become one of the simulated process (must be done after the platform creation, or the host won't exist). */ sg_actor_attach("sender", nullptr, simgrid::s4u::Host::by_name("Tremblay"), nullptr); - ensure_root_tid(); - // Execute the sender code: + ensure_root_tid(); // Only useful in this test: we ensure that simgrid is not broken and that this code is executed in + // the correct system thread + + // Execute the sender code. The root thread was actually turned into a regular actor sender(); - sg_actor_detach(); // Become root thread again + sg_actor_detach(); // The root thread becomes maestro again (as proved by the output) XBT_INFO("Detached"); ensure_root_tid();