これは、C++ REST SDK の非同期タスク機能に関する概念的な質問です (また、少し初歩的な質問でもあるかもしれません)。
基本的なアプリケーションでは、クライアントがあり、いくつかのリクエストを実行します。
http_client client(U("whatever"));
for(int i=0; i<100; ++i)
{
http_request request;
//fill the request
client.request(request).then([](http_response response) { /* do something*/});
}
(foo ループは、リクエストが頻繁に送信されることを示すためのものであり、コードでは実際には使用しません)。
質問:
私が理解している限りでは、非同期タスク ライブラリはこれらの着信要求を並列に処理します。つまり、メイン スレッドがすべてのタスクをイベントのような方法で処理するのではなく、ライブラリがいくつかの基になるスレッド プールにタスクを割り当てます。 (--私には透明ではありません--) 方法。私はそれを正しく理解しましたか?
前の見解が正しければ、REST SDK を C++ のマルチスレッド機能と組み合わせる理由はあります。たとえば、上記のループをもう一度取り上げると、10 個のスレッドを開始し、それぞれのプロセスで 10 回のループ反復を実行します。これは理にかなっていますか、それとも不要ですか?
さらに、一般的に、C++11 のマルチスレッド機能によって ppl 機能を組み合わせる必要がある一般的なパターンはありますか? それとも、内部の REST SDK と ppl がより良い仕事をしてくれると信頼しても安全でしょうか?
(情報: cpprest ディスカッション ページでもこの質問をしました。ただし、このフォーラムはもう維持されていないようです。)