アクターモデルと通信シーケンシャルプロセス(CSP)の違い


16

私たちが見てみると俳優のモデル通信シーケンシャル、プロセス、我々は、彼らが両方やろうとしていることがわかり同時実行をに基づいてメッセージパッシング、まだ彼らは別個のものです

(私たちは、の実装を参照CSPモデル行く-LANGゴルーチン(とClojureのの core.async)とにおけるアクターモデルScalaの アッカのツールキット)

アクターモデルとCSPの違いの簡単なリストを取得しようとしています。これまでのところ:

これは正しいです?不足しているものはありますか?

仮定

  • 「俳優モデル」と言うとき-私はScalaのAkkaフレームワークでの実装の背後にある理論的基礎を意味します

大きなポイント:CSPでは、メッセージの受け渡しは同期的です。アクターでは、メッセージの受け渡しは非同期です。
デイブクラーク14年

@hawkeye「その」俳優モデルとみなすものは何ですか?非公式な記述以来、幾分異なる性質を持つ多くの形式化が登場しました。
マーティンバーガー14年

@Martin-それは役に立ちます。仮定を更新しました。「私が探しているもの」を見つけるのを手伝うことができるかもしれません
ホーキー14年

@hawkeye Akkaモデルとはどういう意味ですか?主要な計算メカニズムだけですか、それとも分散監視/エラー処理フレームワークですか?
マーティンバーガー

@MartinBergerちょうど主要な計算メカニズム
hawkeye 14年

回答:


6

Erlangの仕組みを以下に示します。アッカは非常に似ていると思います。

各プロセスには単一のメールボックスがあります。メッセージは送信者によって受信者のメールボックスに入れられ、パターンマッチングを使用して受信者によってフェッチされます。この一致プロセスは、メールボックス内の最も古いメッセージは一致しないが、若いメッセージは一致するという意味で、メッセージの順序を変更できます。この場合、若い方が最初に消費されます。それ以外は、メッセージの順序は保持されます。

これを念頭に置いて、バッファからの入力パターンマッチング入力で拡張された非同期 -calculusは、Erlang(したがってAkka)のセマンティクスを正確に記述しますが、 -calculusはプロセスごとに1つのチャネルに制限があります。ただし、通常はエンコードが必要ではなく、ターゲットシステムを直接モデル化する計算が必要です。そのような計算が存在し、それはFeatherweight Erlangと呼ばれます。MostrousとVasconcelosによるものです。彼らの論文はタイピングに焦点を当てていますが、それを無視して、セクション3の型なし計算を見てください。ππ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.