UFMG - Pós-graduação em Ciência da Computação - Programação Paralela

A seguir: Buffer com sincronização interna: Acima: Exclusão Mútua Anterior: Exclusão Mútua


Buffer com 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;
$\}$



Osvaldo Carvalho