08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

notas de aula - Jerônimo C. Pellegrini<br />

No modelo actor, um programa é <strong>com</strong>posto de atores cujo <strong>com</strong>portamento consiste<br />

em reagir a mensagens. Para cada mensagem recebida, o <strong>com</strong>portamento de um ator é<br />

definido por uma tripla:<br />

• Um número finito de mensagens que devem ser enviadas para outros atores;<br />

• Um número finito de novos atores que devem ser criados;<br />

• O novo <strong>com</strong>portamento do ator (que será usado quando a próxima mensagem for<br />

recebida).<br />

Por exemplo, um ator poderia receber dois tipos de mensagem, PING e PONG, e dar<br />

uma resposta para cada uma:<br />

• PING: envie ao cliente a mensagem “PING_OK” e mantenha o <strong>com</strong>portamento<br />

anterior;<br />

• PONG: envie a cliente a mensagem “PONG_OK” e mude o <strong>com</strong>portamento,<br />

tornando-se um ator que ignora todas as mensagens.<br />

Não há <strong>com</strong>partilhamento de variáveis ou estruturas de qualquer tipo. A única forma<br />

de <strong>com</strong>unicação entre atores é a passagem de mensagens. Por isso é <strong>com</strong>um usar o nome<br />

processo para falar do <strong>com</strong>portamento de atores – no entanto, as implementações do<br />

modelo actor normalmente não mapeiam atores diretamente em processos do sistema<br />

operacional, cuja criação e manutenção são caras; os atores funcionam <strong>com</strong>o processos<br />

leves.<br />

As mensagens trocadas por atores são assíncronas: não há a necessidade de esperar<br />

o destinatário para enviar a mensagem. Além disso, cada ator tem um buffer (também<br />

chamado de caixa postal), onde mensagens são guardadas até que sejam processadas.<br />

De maneira geral, linguagens que implementam o modelo actor oferecem garantia de<br />

entrega para mensagens.<br />

Mensagens são sempre enviadas a um endereço postal de algum ator. Um ator não<br />

necessariamente conhece os endereços de todos os outros. Quando um ator A reage a<br />

uma mensagem k e decide enviar outra mensagem m a algum outro ator B:<br />

• O endereço de B já era conhecido de A antes de receber a mensagem k, ou<br />

Versão Preliminar<br />

• O enrereço de B estava contido na mensagem k, ou<br />

• B é um novo ator, criado <strong>com</strong>o resultado do processamento da mensagem k.<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

289

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!