-/*! \page FAQ Frequently Asked Questions
+/*! \page FAQ MSG Frequently Asked Questions
@tableofcontents
+This document is the FAQ of the MSG interface. Some entries are a bit aging and it should be refreshed at some point.
+
\section faq_simgrid I'm new to SimGrid. I have some questions. Where should I start?
-You are at the right place... Having a look to these
-<a href="http://www.loria.fr/~quinson/blog/2010/06/28/Tutorial_at_HPCS/">the slides of the HPCS'10 tutorial</a>
-(or to these <a href="http://graal.ens-lyon.fr/~alegrand/articles/slides_g5k_simul.pdf">ancient
-slides</a>, or to these
-<a href="http://graal.ens-lyon.fr/~alegrand/articles/Simgrid-Introduction.pdf">"obsolete" slides</a>)
-may give you some insights on what SimGrid can help you to do and what
-are its limitations. Then you definitely should read the \ref
-msg_examples.
+You are at the right place... To understand what you can do or
+cannot do with SimGrid, you should read the
+<a href="http://simgrid.gforge.inria.fr/tutorials.php">tutorial
+slides</a> from the SimGrid's website. You may find more uptodate
+material on the
+<a href="http://people.irisa.fr/Martin.Quinson/blog/SimGrid/">blog of
+Martin Quinson</a>.
+
+Another great source of inspiration can be found in the \ref s4u_examples.
If you are stuck at any point and if this FAQ cannot help you, please drop us a
mail to the user mailing list: <simgrid-user@lists.gforge.inria.fr>.
You could use a dictionary (#xbt_dict_t) of dynars (#xbt_dynar_t). If
you still don't see how to do it, please come back to us...
-\subsubsection faq_MIA_asynchronous I want to do asynchronous communications in MSG
-
-You are probably looking for the following functions:
-MSG_task_isend() and MSG_task_irecv();
-MSG_comm_test(), MSG_comm_wait(), MSG_comm_waitall() and MSG_comm_waitany();
-MSG_comm_destroy().
-
-There is even a specific example section on \ref msg_ex_asynchronous_communications.
-
\subsubsection faq_MIA_thread_synchronization How to synchronize my user processes?
It depends on why you want to synchronize them. If you just want to
Instead, you should use the synchronization mechanism provided by the
simulation kernel. This could with a SimGrid mutex, a SimGrid
-condition variables or a SimGrid semaphore, as described in \ref
-XBT_synchro (in Java, only semaphores are available). But actually,
+condition variables or a SimGrid semaphore, as described in @ref
+msg_synchro (in Java, only semaphores are available). But actually,
many synchronization patterns can be encoded with communication on
mailboxes. Typically, if you need one process to notify another one,
you could use a condition variable or a semphore, but sending a
way:
\code
-SD_task_dependency_add(NULL, NULL, t1, c);
-SD_task_dependency_add(NULL, NULL, c, t2);
+SD_task_dependency_add(t1, c);
+SD_task_dependency_add(c, t2);
\endcode
This way task t2 cannot start before the termination of communication c