Esistono costrutti di alto livello che effettuano per noi la mutua esclusione. Tramite il costrutto shared T V si definisce una variabile condivisa, che può essere raggiunta solo in mutua esclusione tramite il comando region V do S. In questo modo si evitano errori.
L'esempio del produttore e consumatore con questo costrutto risulta più semplice:
typedef struct bufferbag {
shared message bufer[MAX];
sgared int p=0, r=0;
semaphore_t full=0, empty=MAX
} buffer;
Produttore
wait(b.empty;
region b.p do{
buffer[b.p]
b.p = (b.p+1)%MAX;
}
signal (b.full)
Consumatore
wai(b.full)
region b.c do{
m=buffer[b.c]
b.c=(b.c+1)%MAX;
}
signal (b.empty);
Per le immagini Ringraziamo ©ale200
| < Prec. | Succ. > |
|---|






