X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ee1477d33506867034463d4d790279340382d7cc..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 11785ff832..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. */ @@ -12,16 +12,12 @@ namespace sg4 = simgrid::s4u; static void test() { - std::vector pending_activities; - sg4::ExecPtr bob_compute = sg4::this_actor::exec_init(1e9); - pending_activities.push_back(boost::dynamic_pointer_cast(bob_compute)); sg4::IoPtr bob_write = sg4::Host::current()->get_disks().front()->io_init(4000000, sg4::Io::OpType::WRITE); - pending_activities.push_back(boost::dynamic_pointer_cast(bob_write)); sg4::IoPtr carl_read = sg4::Host::by_name("carl")->get_disks().front()->io_init(4000000, sg4::Io::OpType::READ); - pending_activities.push_back(boost::dynamic_pointer_cast(carl_read)); sg4::ExecPtr carl_compute = sg4::Host::by_name("carl")->exec_init(1e9); - pending_activities.push_back(boost::dynamic_pointer_cast(carl_compute)); + + 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"); @@ -39,22 +35,21 @@ 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 while (not pending_activities.empty()) { - ssize_t changed_pos = sg4::Activity::wait_any(pending_activities); - XBT_INFO("Activity '%s' is complete", pending_activities[changed_pos]->get_cname()); - pending_activities.erase(pending_activities.begin() + changed_pos); + auto completed_one = pending_activities.wait_any(); + if (completed_one != nullptr) + XBT_INFO("Activity '%s' is complete", completed_one->get_cname()); } } int main(int argc, char* argv[]) { sg4::Engine e(&argc, argv); - sg_storage_file_system_init(); e.load_platform(argv[1]); sg4::Actor::create("bob", e.host_by_name("bob"), test);