3

C++ Actor Framework 能否以保证两个actor之间消息顺序的方式使用?我在手册中找不到任何关于此的内容。

4

1 回答 1

4

如果您只有两个参与者直接通信,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 回答