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); }