我的程序使用libcurl通过HTTPS与服务器(始终是同一个)通信。最简单的方法是始终为请求创建新的curl句柄。但是通过这样做,我没有利用curl连接池/重用,如果我理解的话。
创建一个curl句柄池是否有意义,以便任何给定的线程可以从中借用句柄,执行请求,然后将其放回池中?
如果答案是肯定的,那么一个相关的问题:给定一个卷曲句柄,如何找出新的请求是否会重用连接,或者必须创建一个新的连接(因此它没有意义在上述场景中将其重新放回池中?
答案 0 :(得分:3)
如果要重新使用连接,你就无法弄明白,因为那里没有libcurl API。
原因很简单,在判断这个决定之前还有很多因素需要判断,直到你要求转移发生 - 以及它仍然可能失败然后libcurl(透明)的事实无论如何都要建立一个新的连接。
如果你真的必须使用多线程,那么我建议你在你拥有或知道的某些逻辑上拆分请求/线程,以便不同的线程处理不同的主机或类似,以改善连接的变化 - 重用每个句柄。
如果您可以考虑其他选项,则使用运行libcurl多接口的单个线程可以增加连接重用的更改。