next up previous
Next: Leitores e Escritores Up: Liberação do Processador Previous: Camas

Buffer com 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 tex2html_wrap_inline1455 10) {sleep(b,mutex)}

/* espera por uma posição vazia */

B[p] = x; p = (p+1) % 10; n++;

wakeup(b,mutex);

unlock(mutex);

}

void Get(char *x) {

lock(mutex);

while (n tex2html_wrap_inline3786 0) { sleep(b,mutex) }

/* espera por uma posição cheia */

*x = B[c]; c = (c+1) % 10; n-;

wakeup(b,mutex);

unlock(mutex);

}



Osvaldo Sergio F. de Carvalho
Wed Mar 19 14:56:39 EST 1997