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

A seguir: Produtor/Consumidor em Java Acima: Liberação do Processador Anterior: 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 $\geq$ 10) {wait(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 $\leq$ 0) { wait(b,mutex) }  
		 		 /* espera por uma posição cheia */
		 		 *x = B[c]; c = (c+1) % 10; n-;
		 		 wakeup(b,mutex) ;
		 unlock(mutex); 
}



Osvaldo Carvalho