Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix mess between smx_activity_t and ActivityImplPtr.
[simgrid.git] / include / simgrid / s4u / Actor.hpp
index 7131856..a040274 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2006-2020. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 #include <unordered_map>
 
 namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<s4u::Actor>;
+
 namespace s4u {
 
-/** \beginrst An actor is an independent stream of execution in your distributed application.
+/** An actor is an independent stream of execution in your distributed application.
+ *
+ * \rst
  * It is located on a (simulated) :cpp:class:`host <simgrid::s4u::Host>`, but can interact
  * with the whole simulated platform.
  *
@@ -54,8 +59,8 @@ public:
   Actor& operator=(Actor const&) = delete;
 
   // ***** Reference count *****
-  friend XBT_PUBLIC void intrusive_ptr_add_ref(Actor * actor);
-  friend XBT_PUBLIC void intrusive_ptr_release(Actor * actor);
+  friend XBT_PUBLIC void intrusive_ptr_add_ref(const Actor* actor);
+  friend XBT_PUBLIC void intrusive_ptr_release(const Actor* actor);
 #endif
   /** Retrieve the amount of references on that object. Useful to debug the automatic refcounting */
   int get_refcount();
@@ -82,9 +87,12 @@ public:
 #endif
 
   /** Signal indicating that an actor terminated its code.
+   *  @beginrst
    *  The actor may continue to exist if it is still referenced in the simulation, but it's not active anymore.
-   *  If you want to free extra data when the actor's destructor is called, use Actor::on_destruction.
-   *  If you want to register to the termination of a given actor, use this_actor::on_exit() instead.*/
+   *  If you want to free extra data when the actor's destructor is called, use :cpp:var:`Actor::on_destruction`.
+   *  If you want to register to the termination of a given actor, use :cpp:func:`this_actor::on_exit()` instead.
+   *  @endrst
+   */
   static xbt::signal<void(Actor const&)> on_termination;
   /** Signal indicating that an actor is about to disappear (its destructor was called).
    *  This signal is fired for any destructed actor, which is mostly useful when designing plugins and extensions.
@@ -284,17 +292,18 @@ XBT_PUBLIC void execute(double flop, double priority);
  * vector means that `host0` should compute 1000 flops while `host1` will compute 2000 flops. A matrix of
  * communications' sizes of ``[0, 1, 2, 3]`` specifies the following data exchanges:
  *
- *   +-----------+-------+------+
- *   |from \\ to | host0 | host1|
- *   +===========+=======+======+
- *   |host0      |   0   |  1   |
- *   +-----------+-------+------+
- *   |host1      |   2   |  3   |
- *   +-----------+-------+------+
+ * - from host0: [ to host0:  0 bytes; to host1: 1 byte ]
+ *
+ * - from host1: [ to host0: 2 bytes; to host1: 3 bytes ]
+ *
+ * Or, in other words:
  *
  * - From host0 to host0: 0 bytes are exchanged
+ *
  * - From host0 to host1: 1 byte is exchanged
+ *
  * - From host1 to host0: 2 bytes are exchanged
+ *
  * - From host1 to host1: 3 bytes are exchanged
  *
  * In a parallel execution, all parts (all executions on each hosts, all communications) progress exactly at the
@@ -308,12 +317,13 @@ XBT_PUBLIC void execute(double flop, double priority);
  *
  * \endrst
  */
+/** Block the current actor until the built parallel execution completes */
 XBT_PUBLIC void parallel_execute(const std::vector<s4u::Host*>& hosts, const std::vector<double>& flops_amounts,
                                  const std::vector<double>& bytes_amounts);
 
-/** Block the current actor until the built parallel execution completes, or until the timeout. */
-XBT_PUBLIC void parallel_execute(const std::vector<s4u::Host*>& hosts, const std::vector<double>& flops_amounts,
-                                 const std::vector<double>& bytes_amounts, double timeout);
+XBT_ATTRIB_DEPRECATED_v329("Please use exec_init(...)->wait_for(timeout)") XBT_PUBLIC
+    void parallel_execute(const std::vector<s4u::Host*>& hosts, const std::vector<double>& flops_amounts,
+                          const std::vector<double>& bytes_amounts, double timeout);
 
 /** Initialize a sequential execution that must then be started manually */
 XBT_PUBLIC ExecPtr exec_init(double flops_amounts);
@@ -343,9 +353,6 @@ XBT_PUBLIC void suspend();
 /** @brief Yield the current actor. */
 XBT_PUBLIC void yield();
 
-/** @brief Resume the current actor, that was suspend()ed previously. */
-XBT_PUBLIC void resume();
-
 /** @brief kill the current actor. */
 XBT_PUBLIC void exit();
 
@@ -368,11 +375,8 @@ XBT_PUBLIC void on_exit(const std::function<void(bool)>& fun);
 /** @brief Migrate the current actor to a new host. */
 XBT_PUBLIC void set_host(Host* new_host);
 #ifndef DOXYGEN
-XBT_PUBLIC
-XBT_ATTRIB_DEPRECATED_v329("Please use set_host() instead") void migrate(Host* new_host);
+XBT_ATTRIB_DEPRECATED_v329("Please use set_host() instead") XBT_PUBLIC void migrate(Host* new_host);
 #endif
-
-/** @} */
 }