я хочу создать контейнер фьючерсов, каждое будущее является недействительным результатом задачи, чтобы я мог использовать wait_for_any для контейнера, каждая задача - сопрограмма, которую я сейчас реализую с помощью yield_context, и внутри этой сопрограммы есть инициирующая функция, которая возвращает e c и результат, где я использую e c для анализа результата. Затем вызывается другая сопрограмма, передает тот же yield_context.
Я хочу знать, как создать этот дизайн.
и если я буду использовать use_future, как Могу ли я передать код ошибки в e c, не выбрасывая его, если нет другого способа, кроме как выбросить его, в этом случае я поставлю попытку и поймал асин c инициирующие функции.
все эти задачи будут опубликованы, порождены ... на asio io_service.
это мои основные части кода:
это порождение задачи
boost::asio::spawn(GetServiceReference(), boost::bind(&HTTPRequest::Execute, boost::placeholders::_1, m_HttpClient_request_name, Get_mHTTPClient_Responses_Map()));
и это сопрограмма с помощью yield_context
void HTTPRequest::Execute(boost::asio::yield_context yield_r, std::string request_name, std::map<std::string, boost::shared_ptr<HTTPResponse>>& mHTTPClient_Responses_Map)
{
resolver_iterator iterator_connect = boost::asio::async_connect(mSock, iterator_resolve, yield_r[ec]);
}
и внутри Execute мы используем e c для анализа
if (ec == boost::system::errc::errc_t::success){}
и здесь мы запускаем другую сопрограмму, передавающую тот же yield_context
SendRequest(yield_r);
}
Я хочу изменить это, чтобы у меня был контейнер фьючерсов для всех порожденных Execute, меня не волнуют результаты Execute, потому что я помещаю их в класс ответа Response.
Но мне нужен результат в будущем, поэтому что я могу использовать wait_any на контейнере.