fjorgemota / programacao-concorrente-ufsc-2014-2

Códigos de Programação Concorrente. Pois a concorrência aqui é brava.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cliente entra duas vezes na fila (antes e durante atendimento)

mrcaique opened this issue · comments

No programa, quando um cliente chega ao cartório e é atendido, às vezes, acontece o problema do cliente "chegar novamente" ao cartório e esperar na fila - sendo atendido duas vezes numa sessão.

Cheguei a considerar o problema estar no processamento de um núcleo, mas nem sempre os clientes chegam numa ordem específica. Tentei impôr alguma condição antes da função de inserir elementos na fila, mas deixa o "atendimento" mais lento e não soluciona o problema.

Alguma sugestão?

Será que essa issue não tem alguma relação com o problema da issue #5?

Estava imaginando aqui e, imagine o seguinte algoritmo.

  • 1 segundo - Cliente entra na fila e começa a aguardar 10 segundos.
  • 2 segundos - Funcionário está atendendo outro cliente e demora 6 segundos para processar esse outro cliente.
  • 8 segundos - Funcionário termina de atender esse outro cliente.
  • 11 segundos -> Cliente entra na fila e aguarda mais 10 segundos.

Para mim, faz sentido, visto que o cliente realmente entra na fila sem saber se foi atendido ou não e fica aguardando.

É uma condição rara, tão ou mais rara quanto a que pode acontecer na issue #6, mas faz parte desses tipos de problemas relatados na disciplina.

O que acha?

Pode ser, mas vale lembrar que o funcionário pode levar de 5 a 10 segundos para antender um cliente, portanto se o cliente esperar os 10 segundos quando está fila, conforme descrito na issue #5, isso pode resolver o problema.

Justamente.

Consegue resolver o #5 ou quer ajuda? (se precisar de ajuda tudo bem)

Então.

Agora essa falha aparentemente está corrigida, pois o cliente aguarda o funcionário concluir o atendimento antes de continuar o processamento.

A issue #5 também foi resolvida por causa disso.