X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/19e4a01d6e38e856dafa1a08942143a8ec7f5e34..eaa222acd330e2c3e2c517c5eaab82c8fcb8a4c1:/examples/s4u/energy-link/s4u-energy-link.cpp diff --git a/examples/s4u/energy-link/s4u-energy-link.cpp b/examples/s4u/energy-link/s4u-energy-link.cpp index 94de986637..37af2797fc 100644 --- a/examples/s4u/energy-link/s4u-energy-link.cpp +++ b/examples/s4u/energy-link/s4u-energy-link.cpp @@ -24,25 +24,20 @@ static void sender(std::vector args) simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName(std::string("message")); + /* Sleep a while before starting the example */ simgrid::s4u::this_actor::sleep_for(10); - /* - Send the task to the @ref worker */ - char* payload = bprintf("%f", comm_size); if (flow_amount == 1) { + /* - Send the task to the @ref worker */ + char* payload = bprintf("%f", comm_size); mailbox->put(payload, comm_size); } else { - // Start all comms in parallel + // Start all comms in parallel, and wait for all completions in one shot std::vector comms; for (int i = 0; i < flow_amount; i++) - comms.push_back(mailbox->put_async(const_cast("message"), comm_size)); - - // And now, wait for all comms. Manually since wait_all is not part of this_actor yet - for (int i = 0; i < flow_amount; i++) { - simgrid::s4u::CommPtr comm = comms.at(i); - comm->wait(); - } - comms.clear(); + comms.push_back(mailbox->put_async(bprintf("%d", i), comm_size)); + simgrid::s4u::Comm::wait_all(&comms); } XBT_INFO("sender done."); } @@ -59,17 +54,16 @@ static void receiver(std::vector args) void* res = mailbox->get(); xbt_free(res); } else { - void* ignored; + void* data[flow_amount]; - // Start all comms in parallel + // Start all comms in parallel, and wait for their completion in one shot std::vector comms; for (int i = 0; i < flow_amount; i++) - comms.push_back(mailbox->get_async(&ignored)); + comms.push_back(mailbox->get_async(&data[i])); - // And now, wait for all comms. Manually since wait_all is not part of this_actor yet + simgrid::s4u::Comm::wait_all(&comms); for (int i = 0; i < flow_amount; i++) - comms.at(i)->wait(); - comms.clear(); + xbt_free(data[i]); } XBT_INFO("receiver done."); } @@ -79,29 +73,11 @@ int main(int argc, char* argv[]) simgrid::s4u::Engine e(&argc, argv); - /* Check if we got --NS3 on the command line, and activate ecofen if so */ - bool NS3 = false; - for (int i = 0; i < argc; i++) { - if (strcmp(argv[i], "--NS3") == 0) - NS3 = true; - if (NS3) // Found the --NS3 parameter previously; shift the rest of the line - argv[i] = argv[i + 1]; - } - if (NS3) { - xbt_die("No Ecofen in this build"); - // XBT_INFO("Activating the Ecofen energy plugin"); - // ns3_link_energy_plugin_init(); - // xbt_cfg_set_parse("network/model:NS3"); - // argc -= 1; // We removed it from the parameters - } else { - XBT_INFO("Activating the SimGrid link energy plugin"); - sg_link_energy_plugin_init(); - } + XBT_INFO("Activating the SimGrid link energy plugin"); + sg_link_energy_plugin_init(); - xbt_assert(argc > 1, "\nUsage: %s platform_file [flowCount [datasize]] [--NS3]\n" - "\tExample: %s s4uplatform.xml \n" - "\tIf you add NS3 as last parameter, this will try to activate the ecofen plugin.\n" - "\tWithout it, it will use the SimGrid link energy plugin.\n", + xbt_assert(argc > 1, "\nUsage: %s platform_file [flowCount [datasize]]\n" + "\tExample: %s s4uplatform.xml \n", argv[0], argv[0]); e.loadPlatform(argv[1]);