/** @brief Simulation Agent */
XBT_PUBLIC_CLASS Actor : public simgrid::xbt::Extendable<Actor>
{
+ friend Exec;
friend Mailbox;
friend simgrid::simix::ActorImpl;
friend simgrid::kernel::activity::MailboxImpl;
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 */
/** Resume a suspended actor by resuming the task on which it was waiting for the completion. */
void resume();
-
+
+ void yield();
+
/** Returns true if the actor is suspended. */
int isSuspended();
* This blocks the calling actor until the actor on which we call join() is terminated
*/
void join();
+ void join(double timeout);
// Static methods on all actors:
simix::ActorImpl* getImpl();
/** Retrieve the property value (or nullptr if not set) */
+ std::map<std::string, std::string>* getProperties();
const char* getProperty(const char* key);
void setProperty(const char* key, const char* value);
Actor* restart();
/** 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);
+XBT_PUBLIC(void) parallel_execute(int host_nb, sg_host_t* host_list, double* flops_amount, double* bytes_amount);
+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).
/** @brief Suspend the actor. */
XBT_PUBLIC(void) suspend();
+/** @brief yield the actor. */
+XBT_PUBLIC(void) yield();
+
/** @brief Resume the actor. */
XBT_PUBLIC(void) resume();