在多线程中使用curl句柄的错误工作方法的替代方法

Alternative working method to the wrong one which uses curl handles in multithreading

本文关键字:方法 错误 工作 句柄 多线程 curl      更新时间:2023-10-16

由于libcurl是线程安全的,正如其官方文档中所述

libcurl是线程安全的,但是。。。

上面还写着:

手柄。决不能在多个线程中共享同一个句柄。您可以在线程之间传递句柄,但在任何给定时间都不能使用来自多个线程的单个句柄。

因此,在多个线程上创建单个句柄并使它们(句柄)同步是行不通的。

我如何才能获得一种替代的、高效且廉价的HTTP请求方式(通常情况下,POST和get请求也是如此)?

至少对我来说,这听起来像是你在误解文档。

您可以在每个需要发出请求的线程中创建一个单独的句柄,该线程可以通过该句柄(安全地)发出请求。

您可以创建一个句柄,并在多个线程之间共享,但您需要同步访问,因此在任何给定时间只有其中一个线程发出请求。实现这一点的明显方法是使用互斥锁来保护句柄,互斥锁需要在调用之前获取,并一直保持到调用完成。

为了简单起见,您可能希望在每个将进行curl调用的线程中创建一个单独的句柄。至少在我阅读文档时,只要每个线程使用一个单独的句柄,而另一个线程不能/不会同时使用该句柄,那么您就安全了。