Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mv VM shutdown to the plugin
[simgrid.git] / include / simgrid / s4u / Actor.hpp
index d22640c..8f332c8 100644 (file)
@@ -130,6 +130,7 @@ namespace s4u {
 /** @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;
@@ -154,8 +155,8 @@ 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 */
@@ -258,6 +259,7 @@ public:
    * 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:
 
@@ -305,6 +307,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);
@@ -313,6 +316,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).