Diferenças entre o modelo do ator e os processos sequenciais de comunicação (CSP)

16

Quando analisamos o modelo do ator e os processos sequenciais de comunicação , vemos que ambos estão tentando fazer simultaneidade com base na passagem de mensagens , mas são distintos .

(Nós vemos implementações do modelo CSP no go-lang 's goroutines (e do Clojure core.async ) eo Modelo Ator em Scala Akka kit de ferramentas)

Estou tentando obter uma lista simples das diferenças entre o modelo do ator e o CSP. Até agora eu tenho:

Isso está correto? Falta alguma coisa?

Premissas

  • Quando digo 'modelo de ator' - quero dizer a base teórica por trás da implementação na estrutura Akka de Scala
Hawkeye
fonte
Um ponto importante: no CSP, a passagem de mensagens é síncrona; na transmissão de mensagens de atores é assíncrona.
Dave Clarke
@hawkeye O que você considera ser "o" modelo de ator? Desde sua descrição informal, surgiram muitas formalizações, com propriedades um pouco diferentes.
Martin Berger
@ Martin - isso é útil. Eu atualizei minhas suposições. Talvez você possa me ajudar a encontrar o "que eu estou procurando"
hawkeye
@hawkeye O que você quer dizer com o modelo Akka? Apenas o mecanismo computacional chave, ou também a estrutura distribuída de monitoramento / tratamento de erros?
Martin Berger
@MartinBerger apenas o mecanismo computacional chave
hawkeye

Respostas:

6

Aqui está como eu acho que Erlang funciona. Eu acredito que Akka é muito parecido.

Cada processo possui uma única caixa de correio. As mensagens são colocadas na caixa postal do destinatário pelo remetente e buscadas pelo destinatário usando a correspondência de padrões. Esse processo de correspondência pode alterar a ordem das mensagens no sentido de que a mensagem mais antiga em uma caixa de correio pode não corresponder, mas uma mais nova. Nesse caso, o mais novo é consumido primeiro. Fora isso, a ordem das mensagens é preservada.

ππ

Martin Berger
fonte