【发布时间】:2018-06-02 20:18:01
【问题描述】:
在 CAF 中,响应承诺允许参与者在回复特定请求之前发送和接收其他消息。我的问题是如何使用该承诺的结果。
// function-based, statically typed, event-based API
adder::behavior_type calculator_master(adder::pointer self) {
auto w = self->spawn(worker);
return {
[=](add_atom x, int y, int z) -> result<int> {
auto rp = self->make_response_promise<int>();
self->request(w, infinite, x, y, z).then([=](int result) mutable {
rp.deliver(result);
});
return rp;
}
}; }
我基本上必须在return语句之前使用rp的值。如果您有任何想法,请告诉我
【问题讨论】:
-
我不确定你在问什么。您可以扩展“return 语句之前的 rp 值”部分吗?
request(...).then(...)将始终立即返回,并且基于事件的参与者不应阻塞。在.then(...)延续中你想做哪些你不能做的事情? -
所以我想做的是在演员 A 中调用两个演员 B1 和 B2(使用承诺工作)。然后使用 B1 和 B2 的结果在 A 中进行计算。所以之后self->request,我必须在self->request之外使用返回结果。
标签: promise c++14 actor c++-actor-framework