terça-feira, 8 de março de 2016

Desafio: Jantar dos Filósofos

Um problema clássico de sincronização é o do "Jantar dos Filósofos", que foi proposto em 1965 pelo matemático por Dijkstra (1965) e apresenta a seguinte caracterização:

Cinco filósofos estão sentados ao redor de uma mesa circular para o jantar. Cada filósofo possui um prato para comer. Os filósofos dispõem de hashis e cada um precisa de 2 hashis para comer. Entre cada par de pratos existe apenas um hashi, ou em termos de concorrência, hashis precisam ser compartilhados de forma sincronizada.

Os filósofos comem e pensam, alternadamente. Eles não se atém a apenas uma dastarefas. Além disso, quando comem, pegam apenas um hashi por vez: Se conseguir pegar os dois come por alguns instantes e depois larga os hashis.

O problema é coordenar o uso dos hashis de maneira que nenhum filósofo fique comfome. Esse problema exemplifica muito bem muitas soluções e muitos problemas encontrados na programação concorrente. 

Pode facilmente ocorrer o deadlock se cada filósofo pegar o seu hashi da esquerda e se recusar a liberá-lo até ter comido. Pode ocorrer a inanição se dois filósofos conspirarem contra um terceiro.

Assim, uma implementação desse problema deve tratar o deadlock e usar ummecanismo de state para controlar o acesso a região crítica, que é o uso do hashi.


Em termos da programação, isso significa que teremos 5 objetos (filósofos) e 5 objetos compartilhados (os talheres). Nesse termo que entra o conceito de Thread pois para o compartilhamento múltiplos de objetos é necessária uma programação simultânea, ou seja, todos filósofos "vivos" e todos talheres manipuláveis.

Precisamos desenvolver as classes: Filosofo ( Representa os filósofos em si, e o que eles são capazes de fazer na mesa ), Semaforo ( Define uma propriedade para mostrar aos outro filósofos 0 se estiver livre para uso, 1 se estiver ocupado para uso ), Grade ( Que cria o ambiente e exibe na tela ) e JantarDosFilosofos ( Nosso método principal que implementa nossa Grade ). O nome do pacote é JANTARDOSFILOSOFOS

Nenhum comentário:

Postar um comentário

 

Charles Maquiavel

"Não há nada mais difícil do que se ter em mãos algo novo, nem nada mais perigoso do que conduzir por caminhos inéditos, ou incertos quanto ao sucesso, ao se tomar a dianteira na introdução de uma nova ordem das coisas."

Martha Gabriel

"Sábios nos encantam e estúpidos nos cansam. Os meios digitais apenas ampliaram o poder de ambos, mas a escolha de quem ouvir ainda é nossa."

Sou + vc na Estácio

A Universidade Estácio de Sá está com matriculas abertas para nosso próximo semestre 2016.3 EAD. Oferece 25% de desconto durante todo o primeiro semestre letivo. Não perca essa oportunidade!
Aproveite uma degustação, diversos cursos livres e grátis. Basta acessar o link: http://experimenteseusonho.com.br/Portal/Modules/Login/
 
Blogger Templates