Conceitos Básicos e Técnicas de Implementação de Sistemas Automatizados

Trabalho de programação concorrente - Entrega até 4/junho


Implementar utilizando:    C + Pthreads no Linux
                                                ou
                                       Java, qualquer plataforma

o seguinte exemplo clássico de programação concorrente:
 

Problema do barbeiro dorminhoco

O problema consiste em simular o funcionamento de uma barbearia que possui as seguintes características.

- A barbearia tem uma sala de espera com N cadeiras, uma cadeira de barbear e um barbeiro dorminhoco.

- Se não existem clientes à espera, o barbeiro senta em uma cadeira e dorme.

- Quando chega um cliente, ele acorda o barbeiro.

- Se chega outro cliente enquanto o barbeiro está trabalhando, ele ou ocupa uma cadeira e espera (se tem
alguma cadeira disponível) ou vai embora (se todas as cadeiras estão ocupadas).

Obs: Barbeiro e clientes são processos, mecanismos de sincronização devem ser utilizados para simular a situação descrita acima.
 

Entrega:

- Listagem fonte;
- Apresentação com a presença dos elementos do grupo, serão feitas perguntas.
 

Bibliografia recomendada:

- Concurrent Programming in Java, Doug Lea, Addison-wesley, 1997.
 
- Pthreads Programming, Bradford Nichols, Dick Buttlar and Jacqueline Proulx Farrell, O'Reilly, 1996.