首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CAF承诺结果

CAF承诺结果
EN

Stack Overflow用户
提问于 2018-06-03 04:18:01
回答 1查看 115关注 0票数 0

在CAF中,响应承诺允许参与者在回复特定请求之前发送和接收其他消息。我的问题是如何使用这个承诺的结果。

代码语言:javascript
复制
// 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的值。如果你有什么想法,请告诉我

EN

回答 1

Stack Overflow用户

发布于 2018-06-04 17:16:55

我只是分享一些我的理解。

Response promise与future/promise不完全相同(例如std::future和std:: promise ),所以您不能使用response promise,因为您使用future/promise。

response promise的一种用法是在任务尚未完成时回复发送者。假设执行元A向执行元B发送请求,但B不是处理该请求的那个。B将请求传递给另一个参与者CC处理该请求。在这种情况下,B将请求转发给C,并且必须向A回复一些东西。B不能被阻塞并等待C,否则B无法处理新请求。最后,BA发送一个响应承诺。B创建的响应承诺实际上由A使用,因此A可以等待C的结果。

另外,遗憾的是我没有足够的名气来发表评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50660819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档