-
-
-
CENAPAD-MGCO
A seguir: Sahira Vieira de Miranda Acima: Marcelo Bernardes Vieira Anterior: 4a. Questão
Considerações iniciais:
a) Programa cliente:
barreira bar;
void cliente () {
...
bar.barrier(4); // Minimo de 4 processos (inclusive este)
... // que passaram pela barreira
}
b) Classe para a barreira:
class barreira {
int nprocessos = 0;
bed b;
key mutex;
void barrier(int n) {
lock(mutex);
nprocessos++;
wakeup(b, mutex); // Notifica que mais um passou
while(n > nprocessos) wait(b, mutex);
unlock(mutex);
}
}