-
-
-
-
CENAPAD-MGCO
A seguir: Cristiano Ligieri Pereira
Acima: Gabarito
Anterior: 4a Questão
Uma barreira é uma construção para a
sincronização de processos que é útil para assegurar
que todos os processos envolvidos em uma tarefa atingiram um ponto
determinado em suas computações. A barreira é
inicializada com um valor inteiro. Se um processo executa
bar.barrier(int b), ele é bloqueado na barreira bar até
que o número de processos igualmente bloqueados na barreira atinja
b, quando a progressão de todos os processos em espera na
barreira é liberada. Programe uma classe Barrier que
ofereça este tipo de sincronização.
class Barrier {
int n = 0;
Bed bed;
Key mutex;
void barrier(int b) {
n++;
if(n >= b) {
wakeup(bed, mutex);
n = 0;
} else {
wait(bed, mutex);
}
}
}
Osvaldo Carvalho
-
Postscript -
Comentários?