我的程序使用 libcurl 通过 HTTPS 与服务器(始终是同一服务器)通信。最简单的方法是始终为请求创建新的curl 句柄。但是,如果我理解正确的话,这样做我并没有利用curl连接池/重用。
创建一个curl句柄池是否有意义,以便任何给定的线程可以借用句柄,执行请求,然后将其放回池中?
如果答案是肯定的,那么一个相关的问题:给定一个curl句柄,如何确定对于新请求它是否会重用连接,或者必须创建一个新连接(因此它没有意义)在上述场景中将其放回池中)?
最佳答案
您之前无法确定连接是否可以重复使用,因为没有 libcurl API。
原因很简单,判断该决定涉及许多因素,直到您要求进行转移时才弄清楚这些因素 - 而且它仍然可能失败,然后 libcurl 将(透明地)创建一个无论如何,新连接。
如果您确实必须使用多线程,那么我建议您根据您拥有或知道的某些逻辑拆分请求/线程,以便不同的线程处理不同的主机或类似的主机,以提高连接重用的机会每个 handle 。
如果您可以考虑其他选择,使用运行 libcurl 多接口(interface)的单个线程可能是增加连接重用机会的一种方法。
关于https - 从多个线程使用 libcurl - 如何获得最佳性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870395/