- std::string mboxName = std::string("receiver-") + std::to_string(i % receivers_count);
- simgrid::s4u::MailboxPtr mbox = simgrid::s4u::Mailbox::byName(mboxName);
- std::string msgName = std::string("Message ") + std::to_string(i);
- std::string* payload = new std::string(msgName); // copy the data we send:
- // 'msgName' is not a stable storage location
- XBT_INFO("Send '%s' to '%s'", msgName.c_str(), mboxName.c_str());
- /* Create a communication representing the ongoing communication */
- simgrid::s4u::CommPtr comm = mbox->put_async(payload, msg_size);
- /* Add this comm to the vector of all known comms */
+ std::string msg_content = std::string("Message ") + std::to_string(i);
+ // Copy the data we send: 'msg_content' is not a stable storage location.
+ // It will be destroyed when this actor leaves the loop, ie before the receiver gets it
+ std::string* payload = new std::string(msg_content);
+
+ XBT_INFO("Send '%s' to '%s'", msg_content.c_str(), mboxes[i % receivers_count]->get_cname());
+
+ /* Create a communication representing the ongoing communication, and store it in pending_comms */
+ simgrid::s4u::CommPtr comm = mboxes[i % receivers_count]->put_async(payload, msg_size);