Pthreads/fr: Difference between revisions

Jump to navigation Jump to search
Created page with "En exécutant ce code plusieurs fois de suite, vous noterez probablement une variation dans l'ordre dans lequel les fils esclaves disent ''hello'', ce qui est prévisible puis..."
(Created page with "Dans cet exemple, l'index du fil (de 0 à 11) est passé en argument; la fonction <tt>task</tt> est donc exécutée par chacun des 12 fils. Remarquez que la fonction <tt>pth...")
(Created page with "En exécutant ce code plusieurs fois de suite, vous noterez probablement une variation dans l'ordre dans lequel les fils esclaves disent ''hello'', ce qui est prévisible puis...")
Line 59: Line 59:
Dans cet exemple, l'index du fil (de 0 à 11) est passé en argument;  la fonction <tt>task</tt> est donc exécutée par chacun des 12 fils. Remarquez que  la fonction <tt>pthread_create</tt> ne bloque pas le  fil maître, qui continue à exécuter la fonction <tt>main</tt> après la création de chacun des fils. Une fois les 12 fils créés, le fil maître entre dans la deuxième boucle ''for'' et appelle la fonction bloquante <tt>[http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_join.html pthread_join]</tt> : le fil maître attend alors que les 12 fils esclaves terminent l'exécution de la fonction <tt>task</tt> et qu'ils réintègrent ensuite le fil maître.
Dans cet exemple, l'index du fil (de 0 à 11) est passé en argument;  la fonction <tt>task</tt> est donc exécutée par chacun des 12 fils. Remarquez que  la fonction <tt>pthread_create</tt> ne bloque pas le  fil maître, qui continue à exécuter la fonction <tt>main</tt> après la création de chacun des fils. Une fois les 12 fils créés, le fil maître entre dans la deuxième boucle ''for'' et appelle la fonction bloquante <tt>[http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_join.html pthread_join]</tt> : le fil maître attend alors que les 12 fils esclaves terminent l'exécution de la fonction <tt>task</tt> et qu'ils réintègrent ensuite le fil maître.


If you run this test program several times in a row you'll likely notice that the order in which you see the various worker threads saying hello varies, which is what we would expect since they are now running in an asynchronous manner. Each time the program is executed, the twelve threads compete for access to the standard output during the <tt>printf</tt> call and from one execution of the program to another the winners of this competition will change.
En exécutant ce code plusieurs fois de suite, vous noterez probablement une variation dans l'ordre dans lequel les fils esclaves disent ''hello'', ce qui est prévisible puisqu'ils s'exécutent en mode asynchrone. Chaque fois que le programme est exécuté, les 12 fils répondent en même temps à la fonction <tt>printf</tt> et ce n'est jamais le même fil qui remporte la course.


=Synchronizing Data Access=
=Synchronizing Data Access=
rsnt_translations
56,430

edits

Navigation menu