From a924b954ca57600162ea54a663c830f535a6d38f Mon Sep 17 00:00:00 2001 From: Fred Suter Date: Thu, 26 Oct 2023 16:42:32 -0400 Subject: [PATCH] extend example to add message queues --- .../s4u-activityset-testany.cpp | 26 ++++++++++++++----- .../s4u-activityset-testany.tesh | 2 ++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/examples/cpp/activityset-testany/s4u-activityset-testany.cpp b/examples/cpp/activityset-testany/s4u-activityset-testany.cpp index 8128c24755..d782094435 100644 --- a/examples/cpp/activityset-testany/s4u-activityset-testany.cpp +++ b/examples/cpp/activityset-testany/s4u-activityset-testany.cpp @@ -7,26 +7,26 @@ #include #include #include + namespace sg4 = simgrid::s4u; XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_activity_testany, "Messages specific for this s4u example"); static void bob() { - sg4::Mailbox* mbox = sg4::Mailbox::by_name("mbox"); - const sg4::Disk* disk = sg4::Host::current()->get_disks().front(); + 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 mess = mqueue->get_async(&message); auto io = disk->read_async(3e8); - sg4::ActivitySet pending_activities; - pending_activities.push(exec); - pending_activities.push(comm); - pending_activities.push(io); - + sg4::ActivitySet pending_activities({exec, comm, mess, io}); XBT_INFO("Sleep_for a while"); sg4::this_actor::sleep_for(1); @@ -36,6 +36,8 @@ static void bob() if (completed_one != nullptr) { if (boost::dynamic_pointer_cast(completed_one)) XBT_INFO("Completed a Comm"); + if (boost::dynamic_pointer_cast(completed_one)) + XBT_INFO("Completed a Mess"); if (boost::dynamic_pointer_cast(completed_one)) XBT_INFO("Completed an Exec"); if (boost::dynamic_pointer_cast(completed_one)) @@ -47,6 +49,7 @@ static void bob() } XBT_INFO("Last activity is complete"); delete payload; + delete message; } static void alice() @@ -56,6 +59,14 @@ static void alice() sg4::Mailbox::by_name("mbox")->put(payload, 6e8); } +static void carl() +{ + sg4::this_actor::sleep_for(1.99); + auto* payload = new std::string("Control Message"); + XBT_INFO("Send '%s'", payload->c_str()); + sg4::MessageQueue::by_name("mqueue")->put(payload); +} + int main(int argc, char* argv[]) { sg4::Engine e(&argc, argv); @@ -64,6 +75,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(); diff --git a/examples/cpp/activityset-testany/s4u-activityset-testany.tesh b/examples/cpp/activityset-testany/s4u-activityset-testany.tesh index c590b36890..029e90b8cc 100644 --- a/examples/cpp/activityset-testany/s4u-activityset-testany.tesh +++ b/examples/cpp/activityset-testany/s4u-activityset-testany.tesh @@ -7,6 +7,8 @@ $ ${bindir:=.}/s4u-activityset-testany ${platfdir}/hosts_with_disks.xml "--log=r > [1.00] [ bob] Test for completed activities > [1.00] [ bob] Nothing matches, test again in 0.5s > [1.50] [ bob] Nothing matches, test again in 0.5s +> [1.99] [ carl] Send 'Control Message' +> [2.00] [ bob] Completed a Mess > [2.00] [ bob] Nothing matches, test again in 0.5s > [2.50] [ bob] Nothing matches, test again in 0.5s > [3.00] [ bob] Completed an I/O -- 2.20.1