如何开发多线程应用程序来处理C ++中的curl请求和响应?

时间:2019-04-05 19:07:08

标签: c++ multithreading curl libcurl

我已经开发了一个应用程序,用于向Curl发送请求并获取响应。成千上万的请求必须发送到Curl,而我必须处理响应。到目前为止,我已经成功发送请求和接收响应。

现在,挑战在于服务提供商可以一次处理20个请求。因此,我应该能够通过curl向服务提供商发送20个请求并获得响应。一旦其中一个响应可用,我应该发送另一个请求。这将是一个持续的过程,直到完成数千个请求为止。这可能甚至需要几个小时才能完成。

我不确定处理多线程应用程序的最佳方法,因为我需要知道我发送的请求的响应。换句话说,如果我发送请求A,我必须知道它的响应。

我已经成功发送了一个请求并处理了它的响应。

int getResponse(const std::string& requestToSend, std::string& response, std::string& header)

{

   CURL *curl = curl_easy_init();
   curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestToSend.c_str());
   curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(requestToSend.c_str()));
   curl_easy_setopt(curl, CURLOPT_URL, "SERVICE");
   curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_fn);
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fn);

   /*
       Assume that responseStr, headerStr are now available and initialized to curl.
   */
  res = curl_easy_perform(curl);
  if ( res == CURL_OK )
   {
       std::cout << "Header and response is now available " << std::endl;
       response = responseStr;
       header    = headerStr;
   }
 }

我需要能够不断地调用此函数,但是一次要有'N'个线程。

0 个答案:

没有答案