-
-
-
CENAPAD-MGCO
A seguir: Buffer com sincronização interna
Acima: Exclusão Mútua
Anterior: Exclusão Mútua
key mutex;
char B[10];
int p=0, c=0, n=0;
int Put(char x) {
boolean ok = false;
lock(mutex)}
if(n $<$ 10) {
B[p] = x; p = (p+1) % 10; n++; ok = true;
}
unlock(mutex);
return ok;
}
int Get(char *x) {
boolean ok = false;
lock(mutex);
if (n > 0) {
*x = B[c]; c = (c+1) % 10; n--; ok = true;
}
unlock(mutex)
return ok;
}
O paralelismo é perdido no acesso ao buffer, mas ...
o consumo e a produção de caracteres continuam em paralelo!