Information

Author(s) Olivier Bonaventure
Deadline Keine Frist
Abgabenlimit No limitation

Tags

Einloggen

Utilisation de plusieurs mutex


Utilisation de plusieurs mutex

Dans certains programmes, il est nécessaire de définir plusieurs mutex qui sont utilisés par différents threads pour gérer l'accès à des variables partagées. Considérons un programme qui utilise trois variables globales et est découpé en plusieurs threads.

long a=5;   // variable globale partagée
long b=7;   // variable globale partagée
long c=9;   // variable globale partagée

pthread_mutex_t x; // variable globale associée à a
pthread_mutex_t y; // variable globale associée à b
pthread_mutex_t z; // variable globale associée à c


void update(int * val1, int * val2, pthread_mutex_t * mutex1, pthread_mutex_t * mutex2) {

    err=pthread_mutex_lock(mutex1);
    if(err!=0)
        error(err,"pthread_mutex_lock");
    err=pthread_mutex_lock(mutex2);
    if(err!=0)
        error(err,"pthread_mutex_lock");

    // mise à jour val1
    // mise à jour val2

    err=pthread_mutex_unlock(mutex1);
    if(err!=0)
        error(err,"pthread_mutex_unlock");

    err=pthread_mutex_unlock(mutex2);
    if(err!=0)
        error(err,"pthread_mutex_unlock");

}

Ce programme utilise plusieurs threads qui modifient les variables a, b et c. Parmi les fragments de code ci-dessous qui utilisent plusieurs threads, lesquels sont corrects ?