next up previous
Next: Deadlocks Up: Exclusão Mútua Previous: Buffer com sincronização interna:

Buffer com sincronização interna: programação sujeita a bloqueios

 
char B[10];

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

key mutex;

void Put(char x) {

lock(mutex);

while (n tex2html_wrap_inline1455 10);

/* espera por uma posicao vazia */

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

unlock(mutex);

}

void Get(char *x) {

lock(mutex);

while (n tex2html_wrap_inline3786 0) ;

/* espera por uma posicao cheia */

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

unlock(mutex);

}



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