X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0cd4d8c91c2648bdcb5d1f095132c0930e9427b7..c7c5def2870e604025be03b866967c0c5e293afe:/include/simgrid/s4u/Actor.hpp diff --git a/include/simgrid/s4u/Actor.hpp b/include/simgrid/s4u/Actor.hpp index c6384f45bd..670f5022c9 100644 --- a/include/simgrid/s4u/Actor.hpp +++ b/include/simgrid/s4u/Actor.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -130,6 +131,7 @@ namespace s4u { /** @brief Simulation Agent */ XBT_PUBLIC_CLASS Actor : public simgrid::xbt::Extendable { + friend Exec; friend Mailbox; friend simgrid::simix::ActorImpl; friend simgrid::kernel::activity::MailboxImpl; @@ -154,13 +156,16 @@ public: Actor& operator=(Actor const&) = delete; // ***** Reference count ***** - friend void intrusive_ptr_add_ref(Actor * actor); - friend void intrusive_ptr_release(Actor * actor); + friend XBT_PUBLIC(void) intrusive_ptr_add_ref(Actor * actor); + friend XBT_PUBLIC(void) intrusive_ptr_release(Actor * actor); // ***** Actor creation ***** /** Retrieve a reference to myself */ static ActorPtr self(); + /** Signal to others that a new actor has been created **/ + static simgrid::xbt::signal onCreation; + /** Create an actor using a function * * If the actor is restarted, the actor has a fresh copy of the function. @@ -306,6 +311,7 @@ XBT_ATTRIB_DEPRECATED_v320("Use sleep_for(): v3.20 will turn this warning into a /** Block the actor, computing the given amount of flops */ XBT_PUBLIC(void) execute(double flop); + /** Block the actor, computing the given amount of flops at the given priority. * An execution of priority 2 computes twice as fast as an execution at priority 1. */ XBT_PUBLIC(void) execute(double flop, double priority); @@ -314,6 +320,9 @@ XBT_PUBLIC(void) parallel_execute(int host_nb, sg_host_t* host_list, double* flo XBT_PUBLIC(void) parallel_execute(int host_nb, sg_host_t* host_list, double* flops_amount, double* bytes_amount, double timeout); +XBT_PUBLIC(ExecPtr) exec_init(double flops_amounts); +XBT_PUBLIC(ExecPtr) exec_async(double flops_amounts); + /** Block the actor until it gets a message from the given mailbox. * * See \ref Comm for the full communication API (including non blocking communications).