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
,即使它们以相反的顺序到达演员的邮箱。
C++ Actor Framework 能否以保证两个 actor 之间的消息顺序的方式使用?我在 the manual.
中找不到任何相关信息如果只有两个参与者直接通信,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();
}
);
}
在上面的示例中,这将在 string
消息之前处理 int
,即使它们以相反的顺序到达演员的邮箱。