Differenze tra il modello dell'attore e i processi sequenziali comunicanti (CSP)


16

Quando osserviamo il modello di attore e i processi sequenziali comunicanti , vediamo che entrambi stanno provando a fare concorrenza sulla base del passaggio dei messaggi , ma sono distinti .

(Vediamo implementazioni del Modello CSP in go-lang 's goroutines (e di Clojure core.async ) e il modello attore di Scala Akka toolkit)

Sto cercando di ottenere un semplice elenco delle differenze tra Actor Model e CSP. Finora ho:

È corretto? C'è qualcosa che mi manca?

ipotesi

  • Quando dico "modello dell'attore", intendo le basi teoriche alla base dell'implementazione nel framework Akka di Scala

Un punto enorme: nel passaggio di messaggi CSP è sincrono; nel passaggio degli attori il messaggio è asincrono.
Dave Clarke,

@hawkeye Cosa ritieni sia il "modello" dell'attore? Dalla sua descrizione informale sono apparse molte formalizzazione, con proprietà alquanto diverse.
Martin Berger,

@Martin - è utile. Ho aggiornato i miei presupposti. Forse puoi aiutarmi a trovare "quello che sto cercando"
hawkeye,

@hawkeye Cosa intendi con il modello Akka? Solo il meccanismo computazionale chiave o anche il framework distribuito di monitoraggio / gestione degli errori?
Martin Berger,

@MartinBerger è solo il meccanismo computazionale chiave
hawkeye

Risposte:


6

Ecco come penso che funzioni Erlang. Credo che Akka sia molto simile.

Ogni processo ha una singola cassetta postale. I messaggi vengono inseriti nella cassetta postale del destinatario dal mittente e recuperati dal destinatario utilizzando la corrispondenza del modello. Questo processo di corrispondenza può cambiare l'ordine dei messaggi nel senso che il messaggio più vecchio in una cassetta postale potrebbe non corrispondere, ma uno più giovane lo fa. In questo caso il più giovane viene consumato per primo. Oltre a ciò, l'ordinamento dei messaggi viene conservato.

ππ

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.