C++ Actor Framework 是否保证消息顺序?

Does C++ Actor Framework guarantee message order?

C++ Actor Framework 能否以保证两个 actor 之间的消息顺序的方式使用?我在 the manual.

中找不到任何相关信息

如果只有两个参与者直接通信,CAF 保证消息按发送顺序到达。只有多跳场景才会导致不确定性和消息重排序。

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

在接收端,可以通过 become:

更改 actor 行为来更改消息处理顺序
[=](int) {
  self->become(
    keep_behavior,
    [=](const std::string&) {
      self->unbecome();
    }
  );
}

在上面的示例中,这将在 string 消息之前处理 int,即使它们以相反的顺序到达演员的邮箱。