X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2da930cb71158d192643133d1cb374f94525fa63..845f1a4618a1b53c91e4ff66f67f583cd8700b8c:/examples/cpp/activityset-waitall/s4u-activityset-waitall.cpp diff --git a/examples/cpp/activityset-waitall/s4u-activityset-waitall.cpp b/examples/cpp/activityset-waitall/s4u-activityset-waitall.cpp index efbc3a08ab..2c9cf1ad8b 100644 --- a/examples/cpp/activityset-waitall/s4u-activityset-waitall.cpp +++ b/examples/cpp/activityset-waitall/s4u-activityset-waitall.cpp @@ -9,28 +9,30 @@ #include namespace sg4 = simgrid::s4u; -XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_activity_waittany, "Messages specific for this s4u example"); +XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_activity_waitall, "Messages specific for this s4u example"); static void bob() { sg4::Mailbox* mbox = sg4::Mailbox::by_name("mbox"); + sg4::MessageQueue* mqueue = sg4::MessageQueue::by_name("mqueue"); const sg4::Disk* disk = sg4::Host::current()->get_disks().front(); std::string* payload; + std::string* message; XBT_INFO("Create my asynchronous activities"); auto exec = sg4::this_actor::exec_async(5e9); auto comm = mbox->get_async(&payload); auto io = disk->read_async(3e8); + auto mess = mqueue->get_async(&message); - sg4::ActivitySet pending_activities({boost::dynamic_pointer_cast(exec), - boost::dynamic_pointer_cast(comm), - boost::dynamic_pointer_cast(io)}); + sg4::ActivitySet pending_activities({exec, comm, io, mess}); XBT_INFO("Wait for asynchronous activities to complete, all in one shot."); pending_activities.wait_all(); XBT_INFO("All activities are completed."); delete payload; + delete message; } static void alice() @@ -40,6 +42,12 @@ static void alice() sg4::Mailbox::by_name("mbox")->put(payload, 6e8); } +static void carl() +{ + auto* payload = new std::string("Control Message"); + sg4::MessageQueue::by_name("mqueue")->put(payload); +} + int main(int argc, char* argv[]) { sg4::Engine e(&argc, argv); @@ -48,6 +56,7 @@ int main(int argc, char* argv[]) sg4::Actor::create("bob", e.host_by_name("bob"), bob); sg4::Actor::create("alice", e.host_by_name("alice"), alice); + sg4::Actor::create("carl", e.host_by_name("carl"), carl); e.run();