X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fcfc285a211242ff365a365ffdcd3fab0f426a29..6f4dab453c997cfd6cb3cdff2c69a512370b11e8:/include/simgrid/s4u/Mailbox.hpp diff --git a/include/simgrid/s4u/Mailbox.hpp b/include/simgrid/s4u/Mailbox.hpp index 197b2426f9..21e16e2ebf 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,22 +63,28 @@ 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); /** Return the actor declared as permanent receiver, or nullptr if none **/ ActorPtr get_receiver(); - /** Creates (but don't start) a data emission to that mailbox */ + /** Creates (but don't start) a data transmission to that mailbox */ CommPtr put_init(); - /** Creates (but don't start) a data emission to that mailbox */ + /** Creates (but don't start) a data transmission to that mailbox */ CommPtr put_init(void* data, uint64_t simulated_size_in_bytes); - /** Creates and start a data emission to that mailbox */ + /** Creates and start a data transmission to that mailbox */ CommPtr put_async(void* data, uint64_t simulated_size_in_bytes); - /** Blocking data emission */ + /** Blocking data transmission */ void put(void* payload, uint64_t simulated_size_in_bytes); - /** Blocking data emission with timeout */ + /** Blocking data transmission with timeout */ void put(void* payload, uint64_t simulated_size_in_bytes, double timeout); /** Creates (but don't start) a data reception onto that mailbox */ @@ -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