- - - - CENAPAD-MGCO

contents index A seguir: Monitores Acima: Semáforos Anterior: Solução com Semáforos -


Solução com Semáforos - 2

void take_forks (int i) {
  down(mutex);  /* exclusao mutua nas variaveis de controle */
    state[i] = HUNGRY;
    test(i);
  up(mutex);
  down(s[i]);   /* exclusao mutua com vizinhos */
}

void test(int i) {
  if (state[i] == HUNGRY && 
      state[LEFT] != EATING && state[RIGHT] != EATING) {
    state[i] = EATING;
    up(s[i]);
  };
  /* 
}

void put_forks(int i) {
  down(mutex);  /* exclusao mutua nas variaveis de controle */
    state[i] = THINKING;
    test(LEFT); // notifica
    test(RIGHT);// os vizinhos
  up(mutex);
}



Osvaldo Carvalho - Postscript - Comentários?