next up previous contents
Next: Variable condition Up: Synchronisation de threads Previous: Synchronisation de threads   Contents

Mutex

Les mutex sont des variables utilisables par plusieurs threads ou processus et utilisées pour verrouiller des variables en mémoire partagée (mutex).

La pose d'un mutex se fait par la commande :

[linewidth=1pt,fillstyle=solid,shadow=true](-0.5,0)(17.5,-15)

Ex : accès concurrentiel aux champs d'une base de données. Le champ idnumber est protégé car plusieurs threads peuvent y accéder en même temps.


#include <thread.h>

typedef struct _employee 
{ 
   mutex_t lock; 
   char *firstname; 
   char *lastname; 
   struct _employee *manager; 
   int idnumber; 
} EMPLOYEE;

extern int IDnumber; extern mutex_t IDlock;

EMPLOYEE * EmployeeNew(char * first, char * last) 
{ 
   EMPLOYEE *ep;

   if (!(ep=(EMPLOYEE *)malloc(sizeof(*ep)))) return(NULL);

   mutex_init(&ep->lock,USYNC_THREAD,NULL);
   ep->firstname=strdup(first); 
   ep->lastname=strdup(last);
   mutex_lock(&IDlock); 
   ep->idnumber=IDnumber++; 
   mutex_unlock(&IDlock);
   ep->manager=NULL;
   return(ep); 
}



Arnaud Revel
2001-11-26