-
-
-
CENAPAD-MGCO
A seguir: Monitores
Acima: Semáforos
Anterior: Solução com Semáforos -
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);
}