Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

O Barbeiro Dorminhoco

No description
by

Cíntia Melo

on 18 March 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of O Barbeiro Dorminhoco

Definição
O Barbeiro Dorminhoco é um problema clássico de comunicação inter-processo e sincronização entre múltiplos processos. O problema é análogo a manter o barbeiro ocupado enquanto há clientes, e descansando quando não há nenhum (fazendo isso de uma maneira ordenada). O barbeiro e seus clientes correspondem aos processos mencionados acima.
O Problema
Se outros clientes chegarem enquanto o barbeiro estiver cortando o cabelo de um cliente, eles se sentarão - se houver cadeiras vazias. Ou sairão da barbearia - se todas as cadeiras estiverem ocupadas. O problema é programar o barbeiro e os clientes sem cair em condições de disputa.

enquanto Barbearia.aberta ( )
{
Se Clientes.quantidade ( ) = 0
{
dorme ( )
}
senão
{
Se Não atendendo ( )
{
Clientes.getMutex ( ).lock ( )
Cliente = Clientes.dequeue ( )
Clientes.getMutex ( ).unlock ( )
atende (Cliente)
}
}
}
O Barbeiro Dorminhoco
Na barbearia há um barbeiro, uma cadeira de barbeiro e n cadeiras para eventuais clientes esperarem a vez. Quando não há clientes, o barbeiro senta-se na cadeira de barbeiro e cai no sono. Quando chega um cliente, ele precisa acordar o barbeiro.


...

Barbeiro.inicia ( )
Cliente.inicia ( )
1. Programa Principal
2. Barbeiro.inicia ( ... )

enquanto Barbearia.aberta ( )
{
Se Clientes.quantidade ( ) = Barbearia.capacidade ( )
{
sair ( )
}
senão
{
Clientes.getMutex ( ).lock ( )
Clientes.enqueue (this)
Clientes.getMutex ( ).unlock ( )
Se Barbeiro.dormindo ( )
{
Barbeiro.acorda ( )
}
}
}
3. Cliente.inicia ( ... )
Full transcript