Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação Concorrente
Problemas clássicos
Sumário
Produtor /
consumidor
O barbeiro sonolento
Produtor /
Consumidor
Característica de execução
Dois processos que compartilham um buffer de tamanho limitado
O processo produtor:
Produz um dado
Insere no buffer
Volta a gerar um dado
O processo consumidor:
Consome um dado do
buffer (um por vez)
O problema é
Como garantir que o produtor
não adicionará dados no buffer
se este estiver cheio?
Como garantir que o
consumidor não vai remover
Produtor /
Consumidor
Solução
Para o processo produtor
Entrar em Sleep ou descartar o dado se o buffer estiver cheio
Quando o consumidro remover um item do buffer, este notifica o produtor
pthread_join(prod, NULL);
pthread_join(cons,
NULL);
Sumário
Produtor /
consumidor
O barbeiro sonolento
O jantar dos
filósofos
Jantar dos Filósofos
Definção do
problema
Há cinco filósofos em
torno de uma mesa.
Um garfo é colocado
entre cada filósofo.
Cada filósofo deve,
alternadamente, refletir
e comer.
Para que um filósofo
coma, ele deve possuir
dois garfos
Os dois garfos devem
ser aqueles logo a sua
esquerda e a sua
direita
Para pegar um garfo
Somente pode ser
Jantar dos Filósofos – Solução 1
Proposta de solução
E se após pegar pegarmos um garfo e não conseguimos pegar o
outro devolvêssemos à mesa o primeiro garfo e esperássemos
um tempo fixo?
Jantar dos Filósofos – Solução 2
Proposta de solução
E se após pegar pegarmos um garfo e não conseguimos pegar
o outro devolvêssemos à mesa o primeiro garfo e
esperássemos um tempo fixo?
Proposta de solução
E se após pegar pegarmos um garfo e não conseguimos pegar o
outro devolvêssemos à mesa o primeiro garfo e esperássemos
um tempo, mas agora ALEATÓRIO?
Jantar dos Filósofos – Solução 3
Proposta de solução
E se após pegar pegarmos um garfo e não conseguimos pegar o
outro devolvêssemos à mesa o primeiro garfo e esperássemos um
tempo, mas agora ALEATÓRIO?
Proposta de solução
Usando semáforos
O barbeiro sonolento
O barbeiro
sonolento
O barbeiro
Descrição do
sonolento
problema
A analogia de uma
barbearia com um
barbeiro.
A barbearia possuir
Uma cadeira para
corte de cabelo
Uma sala de espera
com um número
determinado de
cadeiras
Quando o barbeiro
finaliza o corte de
cabelo de um cliente
Ele libera o cliente e
O barbeiro
sonolento
O problema