Pombo correio
Contribuição de: Anderson
Gostei! Vamos usar esse! Não gostei! Mostre-me outro.
Este problema ainda não foi utilizado em nenhum Dojo.
Considere a seguinte situação.
Um pombo correio leva mensagens entre os sites A e B, m
as só quando o número de
mensagens acumuladas chega a 20.
Inicialmente, o pombo fica em A, esperando que existam 20
mensagens para
carregar, e dormindo enquanto não houver.
Quando as mensagens chegam a 20, o pombo deve levar e
xatamente (nenhuma a
mais nem a menos) 20 mensagens de A para B, e em segu
ida voltar para A.
Caso existam outras 20 mensagens, ele parte imediatament
e; caso contrário, ele
dorme de novo até que existam as 20 mensagens.
As mensagens são escritas em um post-it pelos usuários
; cada usuário, quando tem
uma mensagem pronta, cola sua mensagem na mochila do po
mbo. Caso o pombo
tenha partido, ele deve esperar o seu retorno p/ colar
a mensagem na mochila.
O vigésimo usuário deve acordar o pombo caso ele esteja
dormindo.
Cada usuário tem seu bloquinho inesgotável de post-it e
continuamente prepara uma
mensagem e a leva ao pombo.
Usando semáforos, modele o processo pombo e o processo usuário,
lembrando que existem muitos usuários e apenas um pombo.
Identifique regiões críticas na vida do usuário e do pombo.