X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6c1487ed9411709f547ffb549cd21a6fb7b0aab2..8937f1426cc4c3bbe77178ce3a9cdc0687263a8e:/include/simgrid/s4u/Mailbox.hpp diff --git a/include/simgrid/s4u/Mailbox.hpp b/include/simgrid/s4u/Mailbox.hpp index 197b2426f9..6f595450c2 100644 --- a/include/simgrid/s4u/Mailbox.hpp +++ b/include/simgrid/s4u/Mailbox.hpp @@ -27,6 +27,7 @@ class XBT_PUBLIC Mailbox { friend void intrusive_ptr_add_ref(Mailbox*) {} /** private function to manage the mailboxes' lifetime (see @ref s4u_raii) */ friend void intrusive_ptr_release(Mailbox*) {} + public: /** private function, do not use. FIXME: make me protected */ kernel::activity::MailboxImpl* get_impl() { return pimpl_; } @@ -54,7 +55,7 @@ public: /** Declare that the specified actor is a permanent receiver on that mailbox * * It means that the communications sent to this mailbox will start flowing to - * its host even before he does a recv(). This models the real behavior of TCP + * its host even before it does a get(). This models the real behavior of TCP * and MPI communications, amongst other. It will improve the accuracy of * predictions, in particular if your application exhibits swarms of small messages. * @@ -62,6 +63,12 @@ public: * was declared, any other actors can still get() data from the mailbox. The timings * will then probably be off tracks, so you should strive on your side to not get data * from someone else's mailbox. + * + * Note that being permanent receivers of a mailbox prevents actors to be garbage-collected. + * If your simulation creates many short-lived actors that marked as permanent receiver, you + * should call mailbox->set_receiver(nullptr) by the end of the actors so that their memory gets + * properly reclaimed. This call should be at the end of the actor's function, not in a on_exit + * callback. */ void set_receiver(ActorPtr actor); @@ -91,6 +98,7 @@ public: void* get(double timeout); // Deprecated functions +#ifndef DOXYGEN /** @deprecated Mailbox::set_receiver() */ XBT_ATTRIB_DEPRECATED_v323("Please use Mailbox::set_receiver()") void setReceiver(ActorPtr actor) { @@ -120,6 +128,7 @@ public: { return by_name(name); } +#endif }; }} // namespace simgrid::s4u