X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea74f5d95928a521a588737e81f1de94eef25d19..305d783c9c259a5ec28836bdf697f73c6451aa2f:/examples/cpp/io-dependent/s4u-io-dependent.cpp diff --git a/examples/cpp/io-dependent/s4u-io-dependent.cpp b/examples/cpp/io-dependent/s4u-io-dependent.cpp index 486c517be7..f64c4c2e46 100644 --- a/examples/cpp/io-dependent/s4u-io-dependent.cpp +++ b/examples/cpp/io-dependent/s4u-io-dependent.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -8,19 +8,16 @@ #include XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example"); +namespace sg4 = simgrid::s4u; static void test() { - std::vector pending_ios; + sg4::ExecPtr bob_compute = sg4::this_actor::exec_init(1e9); + sg4::IoPtr bob_write = sg4::Host::current()->get_disks().front()->io_init(4000000, sg4::Io::OpType::WRITE); + sg4::IoPtr carl_read = sg4::Host::by_name("carl")->get_disks().front()->io_init(4000000, sg4::Io::OpType::READ); + sg4::ExecPtr carl_compute = sg4::Host::by_name("carl")->exec_init(1e9); - simgrid::s4u::ExecPtr bob_compute = simgrid::s4u::this_actor::exec_init(1e9); - simgrid::s4u::IoPtr bob_write = - simgrid::s4u::Host::current()->get_disks().front()->io_init(4000000, simgrid::s4u::Io::OpType::WRITE); - pending_ios.push_back(bob_write); - simgrid::s4u::IoPtr carl_read = - simgrid::s4u::Host::by_name("carl")->get_disks().front()->io_init(4000000, simgrid::s4u::Io::OpType::READ); - pending_ios.push_back(carl_read); - simgrid::s4u::ExecPtr carl_compute = simgrid::s4u::Host::by_name("carl")->exec_init(1e9); + sg4::ActivitySet pending_activities ({bob_compute, bob_write, carl_read, carl_compute}); // Name the activities (for logging purposes only) bob_compute->set_name("bob compute"); @@ -38,31 +35,28 @@ static void test() // Start the activities. bob_compute->start(); - bob_write->vetoable_start(); - carl_read->vetoable_start(); - carl_compute->vetoable_start(); + bob_write->start(); + carl_read->start(); + carl_compute->start(); // wait for the completion of all activities - bob_compute->wait(); - while (not pending_ios.empty()) { - ssize_t changed_pos = simgrid::s4u::Io::wait_any(pending_ios); - XBT_INFO("Io '%s' is complete", pending_ios[changed_pos]->get_cname()); - pending_ios.erase(pending_ios.begin() + changed_pos); + while (not pending_activities.empty()) { + auto completed_one = pending_activities.wait_any(); + if (completed_one != nullptr) + XBT_INFO("Activity '%s' is complete", completed_one->get_cname()); } - carl_compute->wait(); } int main(int argc, char* argv[]) { - simgrid::s4u::Engine e(&argc, argv); - sg_storage_file_system_init(); + sg4::Engine e(&argc, argv); e.load_platform(argv[1]); - simgrid::s4u::Actor::create("bob", e.host_by_name("bob"), test); + sg4::Actor::create("bob", e.host_by_name("bob"), test); e.run(); - XBT_INFO("Simulation time %g", simgrid::s4u::Engine::get_clock()); + XBT_INFO("Simulation time %g", sg4::Engine::get_clock()); return 0; }