Actors: the Active Entities
===========================
+.. _s4u_ex_actors:
Starting and Stoping Actors
---------------------------
of doing so, depending of whether you want your callback to be
executed when a specific actor ends (with ```this_actor::on_exit()```)
or whether it should be executed when any actor ends (with
+ ```Actor::on_termination()```) or when it gets destroyed (with
```Actor::on_destruction()```)
- |cpp| `examples/s4u/actor-exiting/s4u-actor-exiting.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/actor-exiting/s4u-actor-exiting.cpp>`_
Inter-Actors Interactions
-------------------------
+See also the examples on :ref:`inter-actors communications
+<s4u_ex_communication>` and the ones on :ref:`classical
+synchronization objects <s4u_ex_IPC>`.
+
- **Suspend and Resume actors:**
Actors can be suspended and resumed during their executions.
Activities: what Actors do
==========================
+.. _s4u_ex_communication:
+
Communications on the Network
-----------------------------
These objects are convenient abstractions of parallel
computational kernels that span over several machines, such as a
PDGEM and the other ScaLAPACK routines. Note that this only works
- with the "ptask_L07" host model (`--cfg=host/model:ptask_L07`).
+ with the "ptask_L07" host model (``--cfg=host/model:ptask_L07``).
|br| `examples/s4u/exec-ptask/s4u-exec-ptask.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/exec-ptask/s4u-exec-ptask.cpp>`_
- **Using Pstates on a host:**
- Shows how define a set of pstatesfor a host in the XML, and how the current
- pstate can be accessed/changed with :cpp:func:`simgrid::s4u::Host::get_pstate_speed` and :cpp:func:`simgrid::s4u::Host::set_pstate`.
- |br| `examples/s4u/exec-dvfs/s4u-exec-dvfs.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/exec-dvfs/s4u-exec-dvfs.cpp>`_
- |br| `examples/platforms/energy_platform.xml <https://framagit.org/simgrid/simgrid/tree/master/examples/platforms/energy_platform.xml>`_
+ `examples/platforms/energy_platform.xml <https://framagit.org/simgrid/simgrid/tree/master/examples/platforms/energy_platform.xml>`_
+ shows how define a set of pstates in the XML. The current pstate
+ of an host can then be accessed and changed from the program.
+
+ - |cpp| `examples/s4u/exec-dvfs/s4u-exec-dvfs.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/exec-dvfs/s4u-exec-dvfs.cpp>`_
+ :cpp:func:`simgrid::s4u::Host::get_pstate_speed` and :cpp:func:`simgrid::s4u::Host::set_pstate`.
+ - |py| `examples/python/exec-dvfs/exec-dvfs.py <https://framagit.org/simgrid/simgrid/tree/master/examples/python/exec-dvfs/exec-dvfs.py>`_
+ :py:func:`Host.get_pstate_speed` and :py:func:`Host.set_pstate`.
I/O on Disks and Files
----------------------
i.e. when the accessed disk is not mounted on the caller's host.
|br| `examples/s4u/io-file-remote/s4u-io-file-remote.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/io-file-remote/s4u-io-file-remote.cpp>`_
+.. _s4u_ex_IPC:
+
Classical synchronization objects
---------------------------------
resources must be turned off and on again, and how to react to such
failures in your code.
- |br| `examples/platforms/small_platform_with_failure.xml <https://framagit.org/simgrid/simgrid/tree/master/examples/platforms/small_platform_with_failure.xml>`_
+ |br| `examples/platforms/small_platform_failures.xml <https://framagit.org/simgrid/simgrid/tree/master/examples/platforms/small_platform_failures.xml>`_
|br| The state profiles in `examples/platforms/profiles <https://framagit.org/simgrid/simgrid/tree/master/examples/platforms/profiles>`_
- **Specifying speed profiles:** shows how to specify an external
One of the most famous DHT protocol.
|br| `examples/s4u/dht-chord/s4u-dht-chord.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/dht-chord/s4u-dht-chord.cpp>`_
-.. TODO:: document here the examples about plugins
+.. _s4u_ex_clouds:
+
+Simulating Clouds
+-----------------
+
+ - **Cloud basics**
+ This example starts some computations both on PMs and VMs, and
+ migrates some VMs around.
+ |br| `examples/s4u/cloud-simple/s4u-cloud-simple.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/cloud-simple/s4u-cloud-simple.cpp>`_
+
+.. TODO:: document here the examples about clouds and plugins
+
+=======================
+Model-Checking Examples
+=======================
+
+The model-checker can be used to exhaustively search for issues in the
+tested application. It must be activated at compile time, but this
+mode is rather experimental in SimGrid (as of v3.22). You should not
+enable it unless you really want to formally verify your applications:
+SimGrid is slower and maybe less robust when MC is enabled.
+
+ - **Failing assert**
+ In this example, two actors send some data to a central server,
+ which asserts that the messages are always received in the same order.
+ This is obviously wrong, and the model-checker correctly finds a
+ counter-example to that assertion.
+ |br| `examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp <https://framagit.org/simgrid/simgrid/tree/master/examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp>`_
.. |br| raw:: html