This demonstrates the ``start_time`` and ``kill_time`` attribute of the :ref:`pf_tag_actor` tag.
+ .. example-tab:: examples/python/actor-lifetime/actor-lifetime.py
+
+ This file is not really interesting: the important matter is in the XML file.
+
+ .. example-tab:: examples/c/actor-lifetime/actor-lifetime.c
+
+ This file is not really interesting: the important matter is in the XML file.
+
- **Daemonize actors:**
Some actors may be intended to simulate daemons that run in background. This example show how to transform a regular
actor into a daemon that will be automatically killed once the simulation is over.
See also :cpp:func:`sg_actor_daemonize` and :cpp:func:`sg_actor_is_daemon`.
+ - **Specify the stack size to use**
+ The stack size can be specified by default on the command line,
+ globally by changing the configuration with :cpp:func:`simgrid::s4u::Engine::set_config(std::string)`,
+ or for a specific actor using :cpp:func:`simgrid::s4u::Actor::set_stacksize` before its start.
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/actor-stacksize/s4u-actor-stacksize.cpp
+
+ .. example-tab:: examples/c/actor-stacksize/actor-stacksize.c
+
Inter-Actors Interactions
-------------------------
See also :py:func:`simgrid.Mailbox.put_async()` and :py:func:`simgrid.Comm.wait()`.
+ .. example-tab:: examples/c/async-wait/async-wait.c
+
+ See also :cpp:func:`sg_mailbox_put_async()` and :cpp:func:`sg_comm__wait()`.
+
- **Waiting for all communications in a set:**
The ``wait_all()`` function is useful when you want to block until
all activities in a given set have completed.
See also :cpp:func:`simgrid::s4u::Comm::wait_all()`.
- .. example-tab:: examples/c/async-waitall/async-waitall.c
-
- See also :cpp:func:`sg_comm_wait_all()`.
-
.. example-tab:: examples/python/async-waitall/async-waitall.py
See also :py:func:`simgrid.Comm.wait_all()`.
+ .. example-tab:: examples/c/async-waitall/async-waitall.c
+
+ See also :cpp:func:`sg_comm_wait_all()`.
+
- **Waiting for the first completed communication in a set:**
The ``wait_any()`` function is useful
when you want to block until one activity of the set completes, no
See also :py:func:`simgrid.this_actor.execute()`.
+ .. example-tab:: examples/c/exec-basic/exec-basic.c
+
+ See also :cpp:func:`void sg_actor_execute(double)`
+ and :cpp:func:`void sg_actor_execute_with_priority(double, double)`.
+
- **Asynchronous execution:**
You can start asynchronous executions, just like you would fire
background threads.
:py:func:`simgrid.Exec.get_remaining_ratio()`,
:py:func:`simgrid.this_actor.exec_async()` and
:py:func:`simgrid.Activity.cancel()`.
-
+
+ .. example-tab:: examples/c/exec-async/exec-async.c
+
+ See also :cpp:func:`sg_actor_exec_init()`,
+ :cpp:func:`sg_exec_start()`,
+ :cpp:func:`sg_exec_wait()`,
+ :cpp:func:`sg_exec_get_remaining()`,
+ :cpp:func:`sg_exec_get_remaining_ratio()`,
+ :cpp:func:`sg_actor_exec_async()` and
+ :cpp:func:`sg_exec_cancel()`,
+
- **Remote execution:**
You can start executions on remote hosts, or even change the host
on which they occur during their execution.
See also :py:func:`simgrid.Exec.set_host()`.
+ .. example-tab:: examples/c/exec-remote/exec-remote.c
+
+ See also :cpp:func:`sg_exec_set_host()`.
+
- **Parallel executions:**
These objects are convenient abstractions of parallel
computational kernels that span over several machines, such as a
- :cpp:func:`simgrid::s4u::Link::get_property()` and :cpp:func:`simgrid::s4u::Link::set_property()`
- :cpp:func:`simgrid::s4u::NetZone::get_property()` and :cpp:func:`simgrid::s4u::NetZone::set_property()`
+ .. example-tab:: examples/c/platform-properties/platform-properties.c
+
+ - :cpp:func:`sg_actor_get_property()` and :cpp:func:`sg_actor_set_property()`
+ - :cpp:func:`sg_host_get_property()` and :cpp:func:sg_host_set_property()`
+ - :cpp:func:`sg_link_get_property()` and :cpp:func:`sg_link_set_property()`
+ - :cpp:func:`sg_link_get_property()` and :cpp:func:`sg_link_set_property()`
+
.. group-tab:: XML
**Deployment file:**
.. example-tab:: examples/s4u/platform-failures/s4u-platform-failures.cpp
+ .. example-tab:: examples/c/platform-failures/platform-failures.c
+
.. group-tab:: XML
.. showfile:: examples/platforms/small_platform_failures.xml
.. showfile:: examples/s4u/app-masterworkers/s4u-app-masterworkers-fun.cpp
:language: cpp
+
+ .. group-tab:: C
+
+ .. showfile:: examples/c/app-masterworker/app-masterworker.c
+ :language: cpp
Data diffusion
--------------
.. showfile:: examples/s4u/app-bittorrent/s4u-tracker.cpp
:language: cpp
+ .. group-tab:: C
+
+ .. showfile:: examples/c/app-bittorrent/app-bittorrent.c
+ :language: cpp
+
+ .. showfile:: examples/c/app-bittorrent/bittorrent-peer.c
+ :language: cpp
+
+ .. showfile:: examples/c/app-bittorrent/tracker.c
+ :language: cpp
+
- **Chained Send:**
Data broadcast over a ring of processes.
.. showfile:: examples/s4u/dht-kademlia/node.cpp
:language: cpp
+ .. group-tab:: C
+
+ .. showfile:: examples/c/dht-kademlia/dht-kademlia.c
+ :language: cpp
+
+ .. showfile:: examples/c/dht-kademlia/routing_table.c
+ :language: cpp
+
+ .. showfile:: examples/c/dht-kademlia/answer.c
+ :language: cpp
+
+ .. showfile:: examples/c/dht-kademlia/message.c
+ :language: cpp
+
+ .. showfile:: examples/c/dht-kademlia/node.c
+ :language: cpp
+
.. _s4u_ex_clouds:
Simulating Clouds
.. example-tab:: examples/c/cloud-migration/cloud-migration.c
+=======================
+Model-Related Examples
+=======================
+
+ - **ns-3 as a SimGrid Network Model**
+ This simple ping-pong example demonstrates how to use the bindings to the Network
+ Simulator. The most interesting is probably not the C++ files since
+ they are unchanged from the other simulations, but the associated files,
+ such as the platform file to see how to declare a platform to be used
+ with the ns-3 bindings of SimGrid and the tesh file to see how to actually
+ start a simulation in these settings.
+
+ .. tabs::
+
+ .. example-tab:: examples/s4u/network-ns3/s4u-network-ns3.cpp
+
+ .. group-tab:: XML
+
+ **Platform files:**
+
+ .. showfile:: examples/platforms/small_platform_one_link_routes.xml
+ :language: xml
+
=======================
Model-Checking Examples
=======================