/* This example shows how to use simgrid::s4u::this_actor::wait_any() to wait for the first occurring event.
*
* As for the other asynchronous examples, the sender initiate all the messages it wants to send and
- * pack the resulting simgrid::s4u::CommPtr objects in a vector. All messages thus occurs concurrently.
+ * pack the resulting simgrid::s4u::CommPtr objects in a vector. All messages thus occur concurrently.
*
* The sender then loops until there is no ongoing communication. Using wait_any() ensures that the sender
* will notice events as soon as they occur even if it does not follow the order of the container.
#include <iostream>
#include <string>
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_async_waitall, "Messages specific for this msg example");
+XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_async_waitall, "Messages specific for this s4u example");
class Sender {
long messages_count; /* - number of tasks */
std::vector<simgrid::s4u::CommPtr> pending_comms;
/* Make a vector of the mailboxes to use */
- std::vector<simgrid::s4u::MailboxPtr> mboxes;
+ std::vector<simgrid::s4u::Mailbox*> mboxes;
for (int i = 0; i < receivers_count; i++)
mboxes.push_back(simgrid::s4u::Mailbox::by_name(std::string("receiver-") + std::to_string(i)));
/* Receiver actor expects 1 argument: its ID */
class Receiver {
- simgrid::s4u::MailboxPtr mbox;
+ simgrid::s4u::Mailbox* mbox;
public:
explicit Receiver(std::vector<std::string> args)
{
XBT_INFO("Wait for my first message");
for (bool cont = true; cont;) {
- std::string* received = static_cast<std::string*>(mbox->get());
+ const std::string* received = static_cast<std::string*>(mbox->get());
XBT_INFO("I got a '%s'.", received->c_str());
cont = (*received != "finalize"); // If it's a finalize message, we're done
// Receiving the message was all we were supposed to do