3

2 つのアクター間のメッセージの順序を保証するような方法で C++ Actor Framework を使用できますか? マニュアルでこれについて何も見つけることができませんでした。

4

1 に答える 1

4

直接通信するアクターが 2 つしかない場合、CAF はメッセージが送信された順序で到着することを保証します。非決定性とメッセージの並べ替えが発生する可能性があるのは、マルチホップ シナリオのみです。

auto a = spawn(A);
self->send(a, "foo");
self->send(a, 42); // arrives always after "foo"

受信側では、アクターの動作を次のように変更することで、メッセージの処理順序を変更できますbecome

[=](int) {
  self->become(
    keep_behavior,
    [=](const std::string&) {
      self->unbecome();
    }
  );
}

上記の例では、メッセージがアクターのメールボックスに逆の順序で到着したとしても、これはメッセージのint前にを処理します。string

于 2015-10-04T08:56:19.660 に答える