next up previous
Next: Liberação do Processador Up: Exclusão Mútua Previous: Deadlocks

Buffer com sincronização interna: programação com espera ocupada

 
char B[10];

int p = 0, c = 0, n = 0;

key mutex;

void Put(char x) {

lock(mutex);

while (n tex2html_wrap_inline1455 10) {unlock(mutex); lock(mutex);}

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

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

unlock(mutex);

}

void Get(char *x) {

lock(mutex);

while (n tex2html_wrap_inline3786 0) { unlock(mutex); lock(mutex); }

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

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

unlock(mutex);

}



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