Saya ingin membuat wadah masa depan, setiap masa depan adalah hasil tugas yang tidak berlaku sehingga saya dapat menggunakan wait_for_any pada wadah tersebut, setiap tugas adalah coroutine yang saat ini saya implementasikan menggunakan hasil_konteks, dan di dalam coroutine ini terdapat fungsi inisiasi yang mengembalikan ec dan hasil di mana saya menggunakan ec untuk menganalisis hasil. dan kemudian coroutine lain dipanggil melewati hasil_konteks yang sama.
saya ingin tahu cara membuat desain ini.
dan jika saya akan menggunakan use_future, bagaimana saya bisa meneruskan kode kesalahan agar ec tidak melempar kecuali tidak ada cara lain selain melemparkannya, dalam hal ini saya akan mencoba dan menangkap fungsi memulai async.
semua tugas ini akan diposting, muncul ... di asio io_service .
ini adalah bagian utama saya kode:
ini adalah asal mula tugas
boost::asio::spawn(GetServiceReference(), boost::bind(&HTTPRequest::Execute, boost::placeholders::_1, m_HttpClient_request_name, Get_mHTTPClient_Responses_Map()));
dan ini adalah coroutine yang menggunakan 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]);
}
dan di dalam Execute kami menggunakan ec untuk menganalisis
if (ec == boost::system::errc::errc_t::success){}
dan di sini kita memulai coroutine lain dengan meneruskan konteks_hasil yang sama
SendRequest(yield_r);
}
saya ingin mengubahnya jadi saya memiliki wadah masa depan untuk semua Eksekusi yang dihasilkan, saya tidak peduli dengan hasil Eksekusi karena saya memasukkannya ke Respon kelas anggota.
Tapi saya memerlukan hasil di masa depan sehingga saya dapat menggunakan wait_any di wadah.