-
-
-
CENAPAD-MGCO
A seguir: Propriedades de programas paralelos
Acima: Liberação do Processador
Anterior: Liberação do Processador
char B[10];
int p = 0, c = 0, n = 0;
key mutex;
bed b;
void Put(char x) {
lock(mutex);
while (n >= 10) wait(b,mutex);
/* espera por uma posicao vazia */
B[p] = x; p = (p+1) % 10; n++;
wakeup(b,mutex);
unlock(mutex);
}
void Get(char *x) {
lock(mutex);
while (n <= 0) wait(b,mutex);
/* espera por uma posi\c{c}\~{a}o cheia */
*x = B[c]; c = (c+1) % 10; n--;
wakeup(b,mutex);
unlock(mutex);
}