[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

EP1: threads?



Ola',

Estive pensando no EP1: um cliente do chat pode manter um objeto interno e
registra-lo como um servente no servidor; quando ha' uma nova mensagem na
sala, o servidor chama o metodo apropriado desse servente (ou seja, o
sistema "cliente" opera tambem como servidor.  Por outro lado, o cliente
precisa ter tambem uma referencia para o servidor, para poder enviar
mensagens para ele.

A unica maneira que vejo de realizar isso e', no sistema cliente, usar um
"thread" para o objeto "cliente" e um "thread" para o objeto "servant".
Isso porque o orb "servidor" (que espera a chegada de mensagens do
servidor "real") bloqueia o processo enquanto espera requisicoes corba,
mas ao mesmo tempo o "cliente" (ou seja, a parte do programa que le o
teclado) precisa operar num loop proprio.

Um problema mais ou menos parecido e' se alguem quiser usar algum tipo de
interface grafica; os "toolkits" como GTK+ e Qt funcionam com base em um
"loop" que aguarda a chegada de eventos. Parece-me que esse loop seria
incompativel com a implementacao de um servidor, a menos que sejam usados
threads ou processos separados.

Outra solucao, bem mais besta, e' fazer o cliente checar o servidor
periodicamente e "puxar" todas as mensagens mais recentes.

Eu estou viajando na maionese ou isso que eu disse faz sentido?

Ate' +
Nelson