CAF Promise Result

В 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;
}

}; }

Я в основном должен использовать значение rp перед оператором return. Пожалуйста, дайте мне знать, если у вас есть идеи

1 ответ

Я просто делюсь некоторыми из моего понимания.

Обещание ответа не совсем то же самое, что и будущее / обещание (например, std::future и std:: обещание), поэтому вы не можете использовать ответное обещание, когда используете будущее / обещание.

Одним из вариантов использования обещания ответа является ответ отправителю, пока задача еще не выполнена. Предполагаемый актер A отправляет запрос актеру B но B не тот, который обрабатывает запрос. B доставляет запрос другому актеру C а также C обрабатывает запрос. В этом случае, B направляет запрос C и должен что-то ответить A, B нельзя заблокировать и ждать C, иначе B не может обрабатывать новые запросы. В конце, B отправляет ответное обещание A, Ответное обещание, созданное B на самом деле используется A чтобы A может ждать результата C,

PS Грустно, что мне не хватает репутации, чтобы комментировать.

Другие вопросы по тегам