2013-11-24 6 views
12

1978 Paper by Hoare we have an idea called Communicating Sequential Processesにあります。これはGo,Occam、およびClojureではcore.asyncで使用されます。シーケンシャルプロセス[CSP]はScalaのアクターモデルの代替品ですか?

ScalaのActor Modelの代わりにCSPを使用できますか?(私はJCSPを見ていますが、これが唯一の選択肢かどうか、それが成熟していれば誰でも使用しているのでしょうか?)

EDIT - ScalaのJCSPの代わりにCommunicating Scala Objectsも表示されています。しかし、これらのスレッドは実際のスレッドに結びついているように見えます。これは、CSPの利点の1つを欠いているように見え、多数のスレッドを常にアクティブに保つというメモリリソースコストから逃れることになります。

答えて

2

あなたはthis documentに相談する必要がありますが、一般的にはそこにいくつかの違いです:

  • チャンネルCSPでは、あなたがメッセージを送信するためにチャネルを使用
  • 俳優がアイデンティティを持っている一方で、匿名ですが、俳優たちが直接に連絡することができますその他。
  • CSP通信は、ランデブーの形で行われる(すなわち、同期する)。アクターは非同期メッセージの受け渡しをサポートします。

また、これらの違いがあなたの立場で受け入れられる場合、CSPをActorモデルの代替として使用することは可能です。私はJCSPの経験はありませんが、その特定のライブラリを使用することはお勧めできません。なぜなら、2011年以降、プロジェクトには何の活動もないからです。

+0

CSPでは、チャネルは匿名ではありません。 CSPはプロセス代数であるため、プロセスは変数または式で表すことができます。 CSPの実装には、匿名のプロセスがあるかもしれません。 –

+0

@ArturoHernandez:明確化のためのThx! – rlegendi