2

A と C ( A <-> B <-> C のように) からメッセージを前後に転送することになっている中間のリモート アクター (B) があります。Bのコードには次のようなものがあります

   loop {
      react {
        case msg => val A = sender
          //2) Should this be synchronous with !?
          C ! msg
          //1) What's better react or receive?
          react {
            case response => A ! response   
          }
      }
    }

3 つの質問:

1) 反応または受信 (反応内にネストするため) はどちらが優れていますか?

2) 応答が返されることを考えると、!? ! の代わりに使用できます。

3) このシナリオに関するその他の推奨事項はありますか?

皆さん、ありがとうございました!

4

1 に答える 1

0

標準のアクター モデルに関しては、メッセージをアトミックに処理する必要があります (つまり、別のメッセージを処理しているときにメッセージを受信して​​処理することはできません。これがまさにここでやりたいことです)。

ただし、Scala アクターには緩和されたセマンティクスがあり、それが可能になる場合があります。

質問 1 では、react と receive の違いを明確にする必要があります。とにかく、簡単に反応を使用できます(ここで使用されているようにhttp://www.scala-lang.org/docu/files/actors-api/actors_api_guide.html

または、ネストを使用できませんでした。アクターがリクエストを送信した後、次のループ サイクルで応答を探すように状態を変更する必要があります。

Akka のアクターを統合する Scala 2.10 にアップグレードすることもできます。そのモデルはより明確で使いやすいです。

于 2013-04-09T17:44:50.647 に答える