- - - - CENAPAD-MGCO

A seguir: Sahira Vieira de Miranda Acima: Marcelo Bernardes Vieira Anterior: 4a. Questão


5a. 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);
                }
        }



Osvaldo Carvalho - Postscript - Comentários?