documentation, but it should remain readable directly.
/**
- @defgroup MSG_examples MSG examples
+ @defgroup msg_examples MSG examples
@ingroup MSG_API
@brief Find the MSG example fitting your needs from the extensive set provided in the archive.
- @ref msg_ex_models
- @ref msg_ex_ns3
- @ref msg_ex_io
- - @ref msg_ex_actions
- @ref msg_ex_apps
- @ref msg_ex_misc
-
+
@section msg_ex_basics Basic examples and features
- <b>Ping Pong</b>: @ref examples/msg/app-pingpong/app-pingpong.c\n
It's hard to think of a simpler example: it is just sending one
message back and forth.
The tesh file laying in the directory show how to start the
- simulator binary, enlighting how to pass options to the simulators
+ simulator binary, highlighting how to pass options to the simulators
(as detailed in Section \ref options).
- <b>Token Ring</b>.
@ref examples/msg/app-masterworker/app-masterworker.c\n
Another good old example, where one Master process has a bunch of
task to dispatch to a set of several Worker processes. It is fully
- commented in @ref MSG_ex_master_worker.
+ commented in @ref msg_ex_master_worker.
@section msg_ex_async Asynchronous communications
until all activities in a given set have completed.
- <b>Waiting for the first completed communication in a set</b>.
- @ref examples/msg/async-waitall/async-waitany.c\n
+ @ref examples/msg/async-waitany/async-waitany.c\n
The @ref MSG_comm_waitany function is useful when you want to block
until one activity of the set completes, no matter which terminates
first.
-
+
@section msg_ex_process Acting on Processes
- <b>Creating processes</b>.
@ref examples/msg/process-migration/process-migration.c \n
Processes can move or be moved from a host to another with the @ref MSG_process_migrate function.
+ - <b>Yielding to other processes</b>.
+ @ref examples/msg/process-yield/process-yield.c\n
+ The @ref MSG_process_yield function interrupts the execution of the
+ current process, leaving a chance to run to the other processes
+ that are ready to run at the exact same timestamp
+
- <b>Controling the process life cycle from the XML</b>.
@ref examples/msg/process-startkilltime/process-startkilltime.c \n
You can specify a start time and a kill time in the deployment
@subsection msg_ex_ns3 NS3 as a SimGrid Network Model
This example demonstrates how to use the bindings to the Network
-Simulator, as explained in @ref pls. The most
+Simulator, as explained in @ref pls_ns3. 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 PLS bindings
+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.
I/O operations can also be done in a remote, i.e. when the
accessed disk is not mounted on the caller's host.
-@section msg_ex_actions Following Workload Traces
-
-This section details how to run trace-driven simulations. It is very
-handy when you want to test an algorithm or protocol that only react
-to external events. For example, many P2P protocols react to user
-requests, but do nothing if there is no such event.
-
-In such situations, you should write your protocol in C, and separate
-the workload that you want to play onto your protocol in a separate
-text file. Declare a function handling each type of the events in your
-trace, register them using @ref xbt_replay_action_register in your
-main, and then use @ref MSG_action_trace_run to launch the simulation.
-
-Then, you can either have one trace file containing all your events,
-or a file per simulated process: the former may be easier to work
-with, but the second is more efficient on very large traces. Check
-also the tesh files in the example directories for details.
-
- - <b>Communication replay</b>.
- @ref examples/msg/actions-comm/actions-comm.c \n
- Presents a set of event handlers reproducing classical communication
- primitives (synchronous and asynchronous send/receive, broadcast,
- barrier, etc).
-
- - <b>I/O replay</b>.
- @ref examples/msg/actions-storage/actions-storage.c \n
- Presents a set of event handlers reproducing classical I/O
- primitives (open, read, write, close, etc).
-
-@section msg_ex_apps Examples of Full Applications
-
- - <b>Parallel Matrix Multiplication</b>.
- @ref examples/msg/app-pmm/app-pmm.c \n
- This little application multiplies two matrices in parallel. Each
- of the 9 processes computes a sub-block of the result, with the
- sub-blocks of the input matrices exchanged between the processes. \n
- This is a classical assignment in MPI lectures, here implemented
- in MSG.
-
- - <b>Chord P2P protocol</b>.
- @ref examples/msg/dht-chord/dht-chord.c \n
- This example implements the well known Chord protocol,
- constituting a fully working non-trivial example. This
- implementation is also very efficient, as demonstrated in
- http://hal.inria.fr/inria-00602216/
-
@section msg_ex_misc Miscellaneous
- <b>Task priorities</b>.
/**
-@example examples/msg/app-pingpong/app-pingpong.c
-@example examples/msg/app-token-ring/app-token-ring.c
+@example examples/msg/app-pingpong/app-pingpong.c
+@example examples/msg/app-token-ring/app-token-ring.c
@example examples/msg/app-masterworker/app-masterworker.c
@example examples/msg/async-wait/async-wait.c
@example examples/msg/async-waitall/async-waitall.c
-@example examples/msg/async-waitall/async-waitany.c
+@example examples/msg/async-waitany/async-waitany.c
+@example examples/msg/async-yield/async-yield.c
@example examples/msg/process-create/process-create.c
@example examples/msg/process-suspend/process-suspend.c
@example examples/msg/io-file/io-file.c
@example examples/msg/io-remote/io-remote.c
-@example examples/msg/actions-comm/actions-comm.c
-@example examples/msg/actions-storage/actions-storage.c
-
-@example examples/msg/app-pmm/app-pmm.c
-@example examples/msg/dht-chord/dht-chord.c
-
@example examples/msg/task-priority/task-priority.c
@example examples/msg/platform-properties/platform-properties.c
-
+
*/