https - 从多个线程使用 libcurl - 如何获得最佳性能?

标签 https libcurl

我的程序使用 libcurl 通过 HTTPS 与服务器(始终是同一服务器)通信。最简单的方法是始终为请求创建新的curl 句柄。但是,如果我理解正确的话,这样做我并没有利用curl连接池/重用。

创建一个curl句柄池是否有意义,以便任何给定的线程可以借用句柄,执行请求,然后将其放回池中?

如果答案是肯定的,那么一个相关的问题:给定一个curl句柄,如何确定对于新请求它是否会重用连接,或者必须创建一个新连接(因此它没有意义)在上述场景中将其放回池中)?

最佳答案

您之前无法确定连接是否可以重复使用,因为没有 libcurl API。

原因很简单,判断该决定涉及许多因素,直到您要求进行转移时才弄清楚这些因素 - 而且它仍然可能失败,然后 libcurl 将(透明地)创建一个无论如何,新连接。

如果您确实必须使用多线程,那么我建议您根据您拥有或知道的某些逻辑拆分请求/线程,以便不同的线程处理不同的主机或类似的主机,以提高连接重用的机会每个 handle 。

如果您可以考虑其他选择,使用运行 libcurl 多接口(interface)的单个​​线程可能是增加连接重用机会的一种方法。

关于https - 从多个线程使用 libcurl - 如何获得最佳性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870395/

相关文章:

C++14 cURLcpp 提交表单

C++:如何在使用 libcurl 的 Windows 中运行可执行文件?

https - 如何在 GCP 中使用 https 访问虚拟机实例

tomcat - 在 Google Compute Engine 上的 Tomcat 上启用 SSL

grails - jelastic grails 将 http 重定向到 https

使用 libCURL 在 C 中创建 Azure Blob 存储

tomcat - Grails 中的 Spring Security 重定向到 HTTP 登录页面

php - HTTPS/PHP/NGINX : php://input data is NULL when HTTPS is enabled

sockets - 如何要求 libcurl 不监听套接字只是发送一个 url 请求?

我可以在设置 CURLOPT_HTTPHEADER 后立即调用 curl_slist_free_all 吗?