我已经开发了一个应用程序,用于向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'个线程。