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

Https 从多线程使用libcurl-如何获得最佳性能?,https,libcurl,Https,Libcurl,我的程序使用libcurl通过HTTPS与服务器(始终是同一台)通信。最简单的方法是始终为请求创建新的curl句柄。但是,如果我理解正确的话,这样做并没有利用curl连接池/重用 创建一个curl句柄池,这样任何给定的线程都可以从中借用一个句柄,执行一个请求,然后将其放回池中,这有意义吗 如果答案是肯定的,那么就有一个相关的问题:给定一个curl句柄,如何确定对于一个新请求,它将重用连接,还是必须创建一个新的连接(因此,在上述场景中,将其放回池中没有意义)?您以前无法确定是否存在可重用的连接,因

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

创建一个curl句柄池,这样任何给定的线程都可以从中借用一个句柄,执行一个请求,然后将其放回池中,这有意义吗


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

您以前无法确定是否存在可重用的连接,因为没有libcurl API

原因很简单,在判断这个决定时涉及到很多因素,这些因素直到您请求进行传输时才被弄清楚——事实上,传输仍然可能失败,然后libcurl将(透明地)创建一个新的连接

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


如果你可以考虑另一个选项,使用一个运行LIcCURL多接口的线程可以增加连接重用的机会。

< P>你不能确定是否有一个连接被重新使用,因为没有LIcCURL API。 原因很简单,在判断这个决定时涉及到很多因素,这些因素直到您请求进行传输时才被弄清楚——事实上,传输仍然可能失败,然后libcurl将(透明地)创建一个新的连接

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

如果您可以考虑另一个选项,使用运行LBCURL多接口的单个线程可能是增加连接重用的机会。

HMM,有趣的(可能在经过思考之后接受这个答案,现在只是进行投票)。我还没有考虑过使用多界面。嗯,很有趣(我可能会在仔细考虑后接受这个答案,现在只是投票)。我没有考虑过使用多界面。但问题是——我无法控制调用代码的线程,尽管我可以生成额外的线程。基本上,我是从FUSE(确切地说是osxfuse)回调中调用libcurl。现在(在浏览了多界面教程之后),我不认为它比使用libcurl句柄更好,但是正如我所说的,我需要仔细考虑一下。谢谢嗯,很有意思(我可能会在仔细考虑后接受这个答案,现在只是投票)。我还没有考虑过使用多界面。嗯,很有趣(我可能会在仔细考虑后接受这个答案,现在只是投票)。我没有考虑过使用多界面。但问题是——我无法控制调用代码的线程,尽管我可以生成额外的线程。基本上,我是从FUSE(确切地说是osxfuse)回调中调用libcurl。现在(在浏览了多界面教程之后),我不认为它比使用libcurl句柄更好,但是正如我所说的,我需要仔细考虑一下。谢谢