CAF承诺结果

时间:2018-06-02 20:18:01

标签: promise c++14 actor c++-actor-framework

在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的值。如果您有任何想法,请告诉我

1 个答案:

答案 0 :(得分:0)

我只是分享一些理解。

响应承诺与future / promise不完全相同(例如std :: future和std :: promise),因此在使用future / promise时不能使用响应promise。

响应承诺的一种用法是在任务尚未完成时向发件人回复。假定的actor A向actor B发送请求,但B不是处理请求的请求。 B将请求传递给另一个角色CC处理请求。在这种情况下,B会将请求转发给C,并且必须回复A。无法阻止B并等待C,否则B无法处理新请求。最后,BA发送回复承诺。 B实际使用A创建的响应承诺,以便A可以等待C的结果。

P.S。很遗憾,我没有足够的声誉来发表评论。