rsnt_translations
56,437
edits
(Created page with "Dans cet exemple basé sur le contenu du fichier thread.c plus haut, access to the standard output channel is serialized - as it normally should be - using a mutex. The call t...") |
No edit summary |
||
Line 64: | Line 64: | ||
Dans un programme réel, les fils esclaves doivent lire et dans certains cas modifier certaines données afin d'accomplir leurs tâches. Les 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 certaines données afin d'accomplir leurs tâches. Les 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''). | 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 |