Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Document the semaphores' example (and fix other doc glitches)
authorMartin Quinson <martin.quinson@loria.fr>
Mon, 1 Oct 2018 18:57:32 +0000 (20:57 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Mon, 1 Oct 2018 18:57:32 +0000 (20:57 +0200)
ChangeLog
docs/source/app_java.rst
docs/source/app_s4u.rst
examples/s4u/README.rst
include/simgrid/s4u/Mutex.hpp
include/simgrid/s4u/Semaphore.hpp

index 1b00504..618a6dd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -20,6 +20,7 @@ Documentation:
 S4U new features:
  - Fully reimplement auto_restart mechanism that was utterly broken
    (fix #22, #131 and #281 that were all very related)
+ - Implement semaphores (fix #303 and #291)
  - When creating an actor from a function and its parameters,
    move-only parameters are not allowed anymore, as it would prevent
    the actor to be restartable if its parameters are consumed on run.
@@ -77,6 +78,7 @@ Fixed bugs:
  - #288: MPI_Init(NULL, NULL)
  - #289: Improve documentation of Actor::on_destruction and this_actor::on_exit()
  - #290: Method to check if a mailbox has a message ready to be consumed
+ - #291: [s4u] semaphores do not seem available yet
  - #294: Alltoall collective implementation of mpich
  - #295: Starting a Host as OFF is not supported
  - #296: DTD too permissive
index 828c5f4..ebe7a86 100644 (file)
@@ -18,7 +18,7 @@ The Java Bindings
    
 This section describes jMSG, the Java API to Simgrid. This API mimicks 
 :ref:`MSG <MSG_doc>`, which is a simple yet somehow realistic interface.
-<b>The full reference documentation is provided at the end of this page.</b>
+The full reference documentation is provided at the end of this page.
 
 Most of the documentation of the :ref:`MSG API <MSG_doc>` in C applies
 directly to the Java bindings (any divergence is seen as a bug that we
index 2ada588..0c26d18 100644 (file)
@@ -33,28 +33,28 @@ should use the deprecated MSG API instead.
 Main Concepts
 *************
 
-A typical SimGrid simulation is composed of several |Actors|_, that
+A typical SimGrid simulation is composed of several |API_s4u_Actors|_, that
 execute user-provided functions. The actors have to explicitly use the
 S4U interface to express their :ref:`computation <API_s4u_Exec>`,
 :ref:`communication <API_s4u_Comm>`, :ref:`disk usage <API_s4u_Io>`,
-and other |Activities|_, so that they get reflected within the
-simulator. These activities take place on resources such as |Hosts|_,
-|Links|_ and |Storages|_. SimGrid predicts the time taken by each
+and other |API_s4u_Activities|_, so that they get reflected within the
+simulator. These activities take place on resources such as |API_s4u_Hosts|_,
+|API_s4u_Links|_ and |API_s4u_Storages|_. SimGrid predicts the time taken by each
 activity and orchestrates the actors accordingly, waiting for the
 completion of these activities.
 
 
 When **communicating**, data is not directly sent to other actors but
-posted onto a |Mailbox|_ that serves as a rendez-vous point between
+posted onto a |API_s4u_Mailbox|_ that serves as a rendez-vous point between
 communicating actors. This means that you don't need to know who you
 are talking to, you just put your communication `Put` request in a
 mailbox, and it will be matched with a complementary `Get`
 request.  Alternatively, actors can interact through **classical
-synchronization mechanisms** such as |Barrier|_, |Semaphore|_,
-|Mutex|_ and |ConditionVariable|_.
+synchronization mechanisms** such as |API_s4u_Barrier|_, |API_s4u_Semaphore|_,
+|API_s4u_Mutex|_ and |API_s4u_ConditionVariable|_.
 
-Each actor is located on a simulated |Host|_. Each host is located
-itself in a |NetZone|_, that knows the networking path between one
+Each actor is located on a simulated |API_s4u_Host|_. Each host is located
+itself in a |API_s4u_NetZone|_, that knows the networking path between one
 resource to another. Each NetZone is included in another one, forming
 a tree of NetZones which root zone contains the whole platform.
 
@@ -101,41 +101,37 @@ provides many helper functions to simplify the code of actors.
   - :ref:`class s4u::Semaphore <API_s4u_Semaphore>`
 
 
-.. |Actors| replace:: **Actors**
-.. _Actors: api/classsimgrid_1_1s4u_1_1Actor.html
+.. |API_s4u_Actors| replace:: **Actors**
+.. _API_s4u_Actors: #s4u-actor
 
-.. |Activities| replace:: **Activities**
-.. _Activities: api/classsimgrid_1_1s4u_1_1Activity.html
+.. |API_s4u_Activities| replace:: **Activities**
+.. _API_s4u_Activities: #s4u-activity
 
-.. |Hosts| replace:: **Hosts**
-.. _Hosts: api/classsimgrid_1_1s4u_1_1Host.html
+.. |API_s4u_Hosts| replace:: **Hosts**
+.. _API_s4u_Hosts: #s4u-host
 
-.. |Links| replace:: **Links**
-.. _Links: api/classsimgrid_1_1s4u_1_1Link.html
+.. |API_s4u_Links| replace:: **Links**
+.. _API_s4u_Links: #s4u-link
 
-.. |Storages| replace:: **Storages**
-.. _Storages: api/classsimgrid_1_1s4u_1_1Storage.html
+.. |API_s4u_Storages| replace:: **Storages**
+.. _API_s4u_Storages: #s4u-storage
 
-.. |VirtualMachines| replace:: **VirtualMachines**
-.. _VirtualMachines: api/classsimgrid_1_1s4u_1_1VirtualMachine.html
+.. |API_s4u_VirtualMachines| replace:: **VirtualMachines**
+.. _API_s4u_VirtualMachines: #s4u-virtualmachine
 
-.. |Host| replace:: **Host**
-.. _Host: api/classsimgrid_1_1s4u_1_1Host.html
+.. |API_s4u_Host| replace:: **Host**
 
-.. |Mailbox| replace:: **Mailbox**
-.. _Mailbox: api/classsimgrid_1_1s4u_1_1Mailbox.html
+.. |API_s4u_Mailbox| replace:: **Mailbox**
 
-.. |NetZone| replace:: **NetZone**
-.. _NetZone: api/classsimgrid_1_1s4u_1_1NetZone.html
+.. |API_s4u_NetZone| replace:: **NetZone**
 
-.. |Barrier| replace:: **Barrier**
-.. _Barrier: api/classsimgrid_1_1s4u_1_1Barrier.html
+.. |API_s4u_Barrier| replace:: **Barrier**
 
-.. |ConditionVariable| replace:: **ConditionVariable**
-.. _ConditionVariable: api/classsimgrid_1_1s4u_1_1ConditionVariable.html
+.. |API_s4u_Semaphore| replace:: **Semaphore**
 
-.. |Mutex| replace:: **Mutex**
-.. _Mutex: api/classsimgrid_1_1s4u_1_1Mutex.html
+.. |API_s4u_ConditionVariable| replace:: **ConditionVariable**
+
+.. |API_s4u_Mutex| replace:: **Mutex**
 
 .. THE EXAMPLES
 
index 9293cb5..f672f35 100644 (file)
@@ -214,6 +214,10 @@ Classical synchronization objects
    Shows how to use simgrid::s4u::Barrier synchronization objects.
    |br| `examples/s4u/synchro-barrier/s4u-synchro-barrier.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/synchro-barrier/s4u-synchro-barrier.cpp>`_
 
+ - **Semaphore:**
+   Shows how to use simgrid::s4u::Semaphore synchronization objects.
+   |br| `examples/s4u/synchro-semaphore/s4u-synchro-semaphore.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/synchro-semaphore/s4u-synchro-semaphore.cpp>`_
+
 =============================
 Interacting with the Platform
 =============================
index 60c4525..4c8b920 100644 (file)
@@ -23,7 +23,7 @@ namespace s4u {
  * <a href="http://en.cppreference.com/w/cpp/thread/mutex>std::mutex</a>.
  *
  * As for any S4U object, Mutexes are using the @ref s4u_raii "RAII idiom" for memory management.
- * Use createMutex() to get a ::MutexPtr to a newly created mutex and only manipulate ::MutexPtr.
+ * Use create() to get a simgrid::s4u::MutexPtr to a newly created mutex and only manipulate simgrid::s4u::MutexPtr.
  *
  */
 class XBT_PUBLIC Mutex {
index 442b147..6be8c9f 100644 (file)
@@ -21,8 +21,8 @@ namespace s4u {
  * Instead, you should use the present class, that offers a very similar interface.
  *
  * As for any S4U object, Semaphores are using the @ref s4u_raii "RAII idiom" for memory management.
- * Use createSemaphore() to get a ::SemaphorePtr to a newly created semaphore
- * and only manipulate ::SemaphorePtr.
+ * Use #create() to get a simgrid::s4u::SemaphorePtr to a newly created semaphore
+ * and only manipulate simgrid::s4u::SemaphorePtr.
  *
  */
 class XBT_PUBLIC Semaphore {