2

私のプログラムは libcurl を使用して、HTTPS 経由でサーバー (常に同じサーバー) と通信します。最も簡単な方法は、リクエストに対して常に新しい curl ハンドルを作成することです。しかし、そうすることで、私が正しく理解していれば、カール接続のプーリング/再利用を利用していません。

curl ハンドルのプールを作成して、任意のスレッドがハンドルを借用し、要求を実行してからプールに戻すことができるようにすることは理にかなっていますか?

答えが「はい」の場合、関連する質問: curl ハンドルが与えられた場合、新しいリクエストで接続を再利用するか、新しい接続を作成する必要があるかを確認する方法 (したがって、それを配置する意味はありません)上記のシナリオでプールに戻る)?

4

1 に答える 1

4

そのためのlibcurl APIがないため、接続が再利用されるかどうかを事前に判断することはできません。

その理由は非常に単純で、その決定を判断するには、転送を要求するまで理解できない多くの要因が関係しているためです。また、それでも転送が失敗する可能性があり、libcurl がとにかく新しい接続を作成するという事実があります。 .

本当にマルチスレッドを使用する必要がある場合は、異なるスレッドが異なるホストなどを処理するように、使用している、または知っているロジックでリクエスト/スレッドを分割して、各ハンドルの接続再利用の可能性を高めることをお勧めします。

別のオプションを検討できる場合は、libcurl マルチ インターフェイスを実行する単一のスレッドを使用することで、接続を再利用する可能性を高めることができます。

于 2013-04-08T09:47:52.627 に答える