rsnt_translations
56,430
edits
(Created page with "Un autre outil permet à plusieurs fils d'agir sur la même condition, par exemple d'attendre que les fils esclaves soient sollicités pour une tâche. Il s'agit d'une variabl...") |
No edit summary |
||
Line 115: | Line 115: | ||
Une synchronisation plus subtile est possible avec le verrou lecture/écriture <tt>pthread_rwlock_t</tt>. Cet outil permet la lecture simultanée d'une variable par plusieurs fils, mais se comporte comme un mutex standard, c'est-à-dire qu'aucun autre fil n'a accès à cette variable (en lecture ou en écriture). Comme pour le mutex, le verrou <tt>pthread_rwlock_t</tt> doit être initialisé avant son utilisation et détruit quand il n'est plus nécessaire dans le cours du programme. Un fil obtient un verrou en lecture avec <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_rwlock_rdlock.html pthread_rwlock_rdlock]</tt> et un verrou en écriture avec <tt>[http://pubs.opengroup.org/onlinepubs/007908775/xsh/pthread_rwlock_wrlock.html pthread_rwlock_wrlock]</tt>. Dans les deux cas, le verrou est détruit avec <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_rwlock_unlock.html pthread_rwlock_unlock]</tt>. | Une synchronisation plus subtile est possible avec le verrou lecture/écriture <tt>pthread_rwlock_t</tt>. Cet outil permet la lecture simultanée d'une variable par plusieurs fils, mais se comporte comme un mutex standard, c'est-à-dire qu'aucun autre fil n'a accès à cette variable (en lecture ou en écriture). Comme pour le mutex, le verrou <tt>pthread_rwlock_t</tt> doit être initialisé avant son utilisation et détruit quand il n'est plus nécessaire dans le cours du programme. Un fil obtient un verrou en lecture avec <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_rwlock_rdlock.html pthread_rwlock_rdlock]</tt> et un verrou en écriture avec <tt>[http://pubs.opengroup.org/onlinepubs/007908775/xsh/pthread_rwlock_wrlock.html pthread_rwlock_wrlock]</tt>. Dans les deux cas, le verrou est détruit avec <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_rwlock_unlock.html pthread_rwlock_unlock]</tt>. | ||
Un autre outil permet à plusieurs fils d'agir sur la même condition, par exemple d'attendre que les fils esclaves soient sollicités pour une tâche. Il s'agit d'une variable | Un autre outil permet à plusieurs fils d'agir sur la même condition, par exemple d'attendre que les fils esclaves soient sollicités pour une tâche. Il s'agit d'une variable-condition, exprimée comme suit : <tt>pthread_cond_t</tt>. Comme le mutex ou le verrou lecture/écriture, la variable-condition doit être initialisée avant son utilisation et détruite lorsqu'elle n'est plus nécessaire. Pour utiliser cette variable-condition, un mutex doit contrôler l'accès aux variables qui ont une incidence sur la condition. Un fil en attente d'une condition verrouille le mutex et fait appel à la fonction <tt>[http://pubs.opengroup.org/onlinepubs/007908775/xsh/pthread_cond_wait.html pthread_cond_wait]</tt> avec la variable-condition et le mutex en arguments. Le mutex est détruit ''atomiquement'' avec la création de la variable-condition dont le résultat est attendu par le fil; les autres fils peuvent alors verrouiller le mutex, soit pour attendre la condition ou pour modifier une ou plusieurs de variables, ce qui modifiera la condition. | ||
{{File | {{File | ||
|name=thread_condition.c | |name=thread_condition.c |