Pthreads/fr: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Tags: Mobile edit Mobile web edit
 
Line 66: Line 66:
Dans un programme réel, les fils esclaves doivent lire et dans certains cas modifier les données afin d'accomplir leurs tâches. Ces données sont habituellement un ensemble de variables globales de divers types et dimensions; l'accès concurrent en lecture et en écriture par plusieurs fils doit donc être synchronisé afin d'éviter les [https://en.wikipedia.org/wiki/Race_condition situations de compétition], c'est-à-dire les cas où le résultat du programme dépend de l'ordre dans lequel les fils esclaves accèdent aux données. Si un programme en parallèle doit donner le même résultat que sa version en série, les situations de compétition ne doivent pas se produire.
Dans un programme réel, les fils esclaves doivent lire et dans certains cas modifier les données afin d'accomplir leurs tâches. Ces données sont habituellement un ensemble de variables globales de divers types et dimensions; l'accès concurrent en lecture et en écriture par plusieurs fils doit donc être synchronisé afin d'éviter les [https://en.wikipedia.org/wiki/Race_condition situations de compétition], c'est-à-dire les cas où le résultat du programme dépend de l'ordre dans lequel les fils esclaves accèdent aux données. Si un programme en parallèle doit donner le même résultat que sa version en série, les situations de compétition ne doivent pas se produire.


Le moyen le plus simple et le plus utilisé pour contrôler l'accès concurrent est le [https://fr.wikipedia.org/wiki/Verrou_(informatique) verrou]; dans le contexte de pthreads,  le mécanisme de verrouillage est le mutex (pour ''mutual exclusion''). Les variables de ce type sont assignées à un seul fil à la fois. Après la lecture ou la modification, le fil désactive le verrou. Le code entre l'appel de la variable et le moment où elle est désactivée est exécuté exclusivement par ce fil. Pour créer un mutex, il faut déclarer une variable globale de type <tt>pthread_mutex_t</tt. Cette variable est initialisée par la fonction <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_init.html pthread_mutex_init]</tt>. À la fin du programme, les ressources sont ''déverrouillées'' par la fonction <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_init.html pthread_mutex_destroy]</tt>.
Le moyen le plus simple et le plus utilisé pour contrôler l'accès concurrent est le [https://fr.wikipedia.org/wiki/Verrou_(informatique) verrou]; dans le contexte de pthreads,  le mécanisme de verrouillage est le mutex (pour ''mutual exclusion''). Les variables de ce type sont assignées à un seul fil à la fois. Après la lecture ou la modification, le fil désactive le verrou. Le code entre l'appel de la variable et le moment où elle est désactivée est exécuté exclusivement par ce fil. Pour créer un mutex, il faut déclarer une variable globale de type <tt>pthread_mutex_t</tt>. Cette variable est initialisée par la fonction <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_init.html pthread_mutex_init]</tt>. À la fin du programme, les ressources sont ''déverrouillées'' par la fonction <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_init.html pthread_mutex_destroy]</tt>.
{{File
{{File
   |name=thread_mutex.c
   |name=thread_mutex.c
Bureaucrats, cc_docs_admin, cc_staff
2,306

edits

Navigation menu