什么时候需要curl_global_init()?

时间:2011-05-22 12:22:25

标签: c curl

虽然它的文件说这个功能必须,但是我看到了两个例子,一个有它,另一个没有。

http://curl.haxx.se/libcurl/c/persistant.html

http://curl.haxx.se/libcurl/c/multi-app.html

这个功能是否必要?

1 个答案:

答案 0 :(得分:15)

如果设计它将是必要的。 documentation说:

  

在程序调用libcurl中的任何其他函数之前,必须在程序中至少调用一次该函数(程序是共享内存空间的所有代码)。它设置的环境对于程序的生命周期是恒定的,并且对于每个程序都是相同的,因此多个调用与一个调用具有相同的效果。

但请注意curl_easy_init的文档:

  

如果您还没有调用curl_global_init(3),curl_easy_init(3)会自动执行此操作。这在多线程情况下可能是致命的,因为curl_global_init(3)不是线程安全的,并且可能导致资源问题,因为没有相应的清理。