38,789
edits
(Created page with "=Compilation= Pour utiliser les fonctions et structures de données associées à pthreads dans votre programme C, il faut y inclure le fichier entête (''header file'') <tt>p...") |
(Updating to match new version of source page) |
||
Line 6: | Line 6: | ||
pthreads a servi de base aux approches de parallélisation qui ont suivi, dont OpenMP. On peut voir pthreads comme étant un ensemble d'outils primitifs offrant des fonctionnalités élémentaires de parallélisation, contrairement aux APIs conviviales et de haut niveau comme OpenMP. Dans le modèle pthreads, les fils sont générés dynamiquement pour exécuter des sous-procédures dites légères qui exécutent les opérations de façon asynchrone; ces fils sont ensuite détruits après avoir été réintégrés au processus principal. Puisque tous les fils d'un même programme résident dans le même espace mémoire, il est facile de partager les données à l'aide de variables globales, contrairement à une approche distribuée comme [[MPI]]; toute modification aux données partagées risque cependant de créer de la concurrence (''race conditions''). | pthreads a servi de base aux approches de parallélisation qui ont suivi, dont OpenMP. On peut voir pthreads comme étant un ensemble d'outils primitifs offrant des fonctionnalités élémentaires de parallélisation, contrairement aux APIs conviviales et de haut niveau comme OpenMP. Dans le modèle pthreads, les fils sont générés dynamiquement pour exécuter des sous-procédures dites légères qui exécutent les opérations de façon asynchrone; ces fils sont ensuite détruits après avoir été réintégrés au processus principal. Puisque tous les fils d'un même programme résident dans le même espace mémoire, il est facile de partager les données à l'aide de variables globales, contrairement à une approche distribuée comme [[MPI]]; toute modification aux données partagées risque cependant de créer de la concurrence (''race conditions''). | ||
<div class="mw-translate-fuzzy"> | |||
=Compilation= | =Compilation= | ||
Pour utiliser les fonctions et structures de données associées à pthreads dans votre programme C, il faut y inclure le fichier entête (''header file'') <tt>pthread.h</tt> et compiler le programme avec un indicateur (''flag'') pour faire le lien avec la bibliothèque pthreads. | Pour utiliser les fonctions et structures de données associées à pthreads dans votre programme C, il faut y inclure le fichier entête (''header file'') <tt>pthread.h</tt> et compiler le programme avec un indicateur (''flag'') pour faire le lien avec la bibliothèque pthreads. | ||
</div> | |||
=Creation and Destruction of Pthreads= | =Creation and Destruction of Pthreads= | ||
When parallelizing an existing serial program using pthreads, we use a programming model where threads are created by a parent, then carry out some work, and finally are reabsorbed or joined back into the parent. The parent may be the serial ''master thread'' or another ''worker thread''. New threads are created with the function <tt>[http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_create.html pthread_create]</tt>. This function has four arguments: | When parallelizing an existing serial program using pthreads, we use a programming model where threads are created by a parent, then carry out some work, and finally are reabsorbed or joined back into the parent. The parent may be the serial ''master thread'' or another ''worker thread''. | ||
<br />New threads are created with the function <tt>[http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_create.html pthread_create]</tt>. This function has four arguments: | |||
*the unique identifier for the newly created thread; | |||
*the set of attributes for this thread; | |||
*the C function that the thread will execute upon initiation (the "start routine"); | |||
*the argument for the start routine. | |||
{{File | {{File | ||
|name=thread.c | |name=thread.c |