Laboratório 2
Leitores - Escritores
Entrega: 17 de abril
Objetivo
Considere uma implementação em que as threads fazem acesso de leitura
e escrita a um banco de dados. Em uma implementação ideal, as threads
leitoras podem fazer acesso simultâneo aos dados, mas as threads
escritoras precisam fazer acesso exclusivo.
Como explicado em aula, se dermos
prioridade às threads leitoras, as threads escritoras podem nunca
conseguir atualizar os dados. Por outro lado, se dermos prioridade às
threads escritoras, as threads leitoras poderão ficar eternamente
esperando.
Sua tarefa é especificar e implementar um algoritmo que garanta um
compromisso entre possibilidade de leituras simultâneas e ausência de
deadlock.
Entrega:
Você deverá entregar por e-mail para islene [@] ic [.]
unicamp [.] br os seguintes arquivos:
- um texto explicando a política implementada e como ela garante
que nenhuma thread irá esperar eternamente e que haverá possibilidade
de leituras simultâneas no banco de dados.
- uma implementação da abordagem proposta utilizando semáforos.
- uma implementação da abordagem proposta, com o mesmo
comportamento da anterior, mas que deve ser implementada utilizando
locks e variáveis de condição.
Para escrever as implementações você pode se basear nos
códigos-exemplos fornecidos nas aulas ou criar outra aplicação de
leitores-escritores diferente.