До сих пор я успешно получал информацию от поставщика услуг. Однако мне нужно вызвать этот параллельный процесс с несколькими потоками для миллионов запросов.
Ниже приведен фрагмент кода
size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main()
{
CURL *curl = curl_easy_init();
std::string readBuffer;
if(curl) {
CURLcode res;
curl_easy_setopt(curl, CURLOPT_URL, "service-url");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
}
Вот мои два варианта
а) Один - это пул потоков (Visual studio C ++ 2010 - таким образом, нет доступа к C ++ 11)
б) Использование curl_multi_perform
Когда я использую пул потоков -> Становится ли вызов curl рабочим потоком. Как сделать так, чтобы WriteCallback был специфичен для потока, чтобы никакие два потока не перезаписывали содержимое.
Если я использую curl_multi_perform, что мне нужно сделать, чтобы убедиться, что WriteCallback дает мне вывод для этого конкретного дескриптора?