2

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

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

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

4

1 回答 1

4

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

原因很简单,在您要求转移发生之前,判断该决定的因素很多 - 而且它仍然可能失败,然后 libcurl 无论如何都会(透明地)创建一个新连接.

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

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

于 2013-04-08T09:47:52.627 回答