#include <xbt/Extendable.hpp>
#include <xbt/functional.hpp>
#include <xbt/string.hpp>
+#include <xbt/signal.hpp>
#include <simgrid/chrono.hpp>
#include <simgrid/s4u/forward.hpp>
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<void(simgrid::s4u::ActorPtr)> onCreation;
+
/** Create an actor using a function
*
* If the actor is restarted, the actor has a fresh copy of the function.
const char* getProperty(const char* key);
void setProperty(const char* key, const char* value);
Actor* restart();
-
- ExecPtr exec_init(double flops_amounts);
- ExecPtr exec_async(double flops_amounts);
};
/** @ingroup s4u_api
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).