Академический Документы
Профессиональный Документы
Культура Документы
BRUNO MACEDO
EDUARDO ANDRADE
JULIANA VIANA
LUCAS JEFERSON
LUIS JHONNE
MICHAEL BRITO
VANESSA MEMORIA
So Luis
2013
BRUNO MACEDO
EDUARDO ANDRADE
JULIANA VIANA
LUCAS JEFERSON
LUIS JHONNE
MICHAEL BRITO
VANESSA MEMORIA
So Luis
2013
Cinco filsofos esto sentados ao redor de uma mesa circular para o jantar.
Entre cada par de pratos existe apenas um hashi, ou em termos de concorrncia, hashis
precisam ser compartilhados de forma sincronizada.
Alm 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 filsofo fique com
fome. Esse problema exemplifica muito bem muitas solues e muitos problemas encontrados
na programao concorrente. Pode facilmente ocorrer o deadlock se cada filsofo pegar o seu
hashi da esquerda e se recusar a liber-lo at ter comido. Pode ocorrer a inanio se dois
filsofos conspirarem contra um terceiro.
Assim, uma implementao desse problema deve tratar o deadlock e usar um
mecanismo de state para controlar o acesso a regio crtica, que o uso do hashi.
1.2 IMPLEMENTAO
Na implementao abaixo, utilizou-se a linguagem de programao Python, na verso
estvel 2.7, que possui nativamente a possibilidade de usar threads e outros conceitos da
programao concorrente.
Abaixo percebe-se que o acesso regio critca controlado usando semforos,
tambm nativos da linguagem.