使用多线程的异步请求处理

时间:2019-03-28 05:40:40

标签: c++ multithreading asynchronous curl curl-multi

我正在开发一个模块,该模块使用10个队列来处理线程,并且每个队列都使用curl_easy接口(与Lock一起)发送curl请求,以便;保持单个连接,直到未收到响应。我想通过使用curl_multi接口来增强请求处理,其中curl请求是由线程发送并以并行方式处理的。

我创建了一个单独的代码来实现它。例如,我创建了3个线程,它们被一个一个地处理,第一个线程向curl_multi发送请求,直到它运行并存在传输为止,该传输使用curl_easy接口为每次传输分配资源。

我已经看了很多例子,但无法弄清楚如何在C ++中实现它。另外,因为我最近学习了C ++中的多线程和curl概念,所以我需要这种方法的帮助。

我希望单个线程应该能够发送curl请求,直到用户不停止发送为止。

更新-我添加了两个线程,每个线程同时发送两个请求。 curl_multi由句柄数组处理,以便curl_easy。 我想让它没有数组,因为这限制了请求的数量。

可以使它异步并接受所有传输并仅在客户端/用户这样做时退出。 curl_multi有足够的示例,因此我不清楚它的实现。

1 个答案:

答案 0 :(得分:0)

读取curl_multidocumentation时,似乎不必为此创建其他线程,因为它可以通过添加到多句柄对象中的多个简单句柄来工作。然后,您致电curl_multi_perform以非阻塞方式开始所有传输。

  

我希望单个线程应该能够发送curl请求,直到用户不停止发送为止。

我不明白您的意思是什么,您是说您只是想保持这些连接的生命,直到一切都转移了?如果是这样,curl_multi已经为您提供了转移进度的信息,可以帮助您确定要做什么。

希望有帮助