Lorsque nous regardons le modèle d'acteur et les processus séquentiels communicants, nous voyons qu'ils essaient tous les deux de faire de la concurrence basée sur le passage de messages , mais ils sont distincts .
(Nous voyons des implémentations du modèle CSP dans les goroutines de go-lang (et core.async de Clojure ) et le modèle d'acteur dans la boîte à outils Akka de Scala )
J'essaie d'obtenir une liste simple des différences entre le modèle d'acteur et le CSP. Jusqu'à présent, j'ai:
- le passage du message des acteurs est asynchrone, le passage du message CSP est synchrone
- les acteurs sont composables , le CSP ne l'est pas (nécessairement)
- les acteurs ont toujours un non-déterminisme illimité , le CSP peut avoir un non-déterminisme borné ou illimité
- les acteurs ont une topologie variable alors que CSP a une topologie fixe
- les acteurs ont le principe de localité , le CSP n'a pas de localité
- les acteurs sont conçus autour de leur comportement, le CSP n'a pas forcément
Est-ce correct? Y a-t-il quelque chose qui me manque?
Hypothèses
- Quand je dis «modèle d'acteur» - je veux dire la base théorique derrière la mise en œuvre dans le cadre Akka de Scala