Estaba buscando programación concurrente en los lenguajes de programación Erlang and Go. Según mi hallazgo, se utilizan modelo de actor y CSP respectivamente.
Pero todavía estoy confundido con cuáles son las diferencias objetivas entre CSP y actores. ¿Es solo teóricamente diferente pero el mismo concepto?
programming-languages
concurrency
concepts
go
erlang
nish1013
fuente
fuente
Respuestas:
En la práctica, hay muy poca diferencia: ambos representan unidades de ejecución separadas cuya interfaz principal con el mundo exterior es a través de mensajes.
Las diferencias están en los detalles de implementación de los idiomas. Aquí hay algunos detalles:
receive
recibe todo lo que se envía al proceso y debe coincidir con el patrón (en Go, usaría unselect
con múltiples casos, por lo que el código se vería muy similar, solo con diferentes canales).Este último punto es, creo, el más importante. Si bien ambos usan los mensajes como el medio principal de comunicación, Erlang ofrece garantías mucho más fuertes sobre cómo y cuándo puede cambiar el estado.
fuente