- - - - CENAPAD-MGCO

contents index 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;
}

O paralelismo é perdido no acesso ao buffer, mas ...

o consumo e a produção de caracteres continuam em paralelo!



Osvaldo Carvalho - Postscript - Comentários?