16

私はcurl送信POSTGETリクエストに使用しており、コールバック関数を使用してこれらのリクエストからの応答を取得しています。これらのcallback関数は静的メンバー関数であり、非静的メンバー関数を呼び出します(非静的メンバー関数をcurl直接使用することはできないため、この回避策があります)。

これらのコールバック関数は結果を返すことができないため、C++クラスの属性を使用して応答を格納します。これはすべて正常に機能しますが、今は私の質問です。curl_easy_perform()リクエスト全体が送信され、応答がコールバック関数によって処理されるまでブロックしますか、それともプログラムは続行しcurl_easy_perform()、リクエストからの応答を受信したときに何らかの理由で中断されますか?

私にとって重要なのは、応答を含むはずの属性のデータがすでにそこにあること、またはコールバック関数がまだ呼び出されていないためにこの属性に古いデータが残っている可能性があることを確認したいということです。

説明がわかりにくいので、わからない場合はお知らせください。言い換えさせていただきます。

ありがとう!

4

1 に答える 1

18

curl_easy_perform()は、リクエスト全体が送信され、応答がコールバック関数によって処理されるまでブロックしますか

はい、それはまさにそれが行うことです。

(非ブロッキング動作が必要な場合は、libcurlのマルチインターフェイスが最適です。)

于 2013-03-09T14:54:29.693 に答える