请告诉我,Libcurl 文档说 curl_global_init () 函数:
此函数必须在程序中至少调用一次。
和
这个函数不是线程安全的。当程序中的任何其他线程(即共享相同内存的线程)正在运行时,您不得调用它。
这个函数不是线程安全的。当程序中的任何其他线程正在运行时(即使用相同内存的线程),您不应该调用它。
我似乎分别理解了这些词,但总的意思不知何故没有达到。“当程序中的任何其他线程正在运行时,您不得调用它”是什么意思?
也就是说,如果我在代码中至少创建了一个线程,并且在这个线程中执行了任何操作,但不是 libcurl,或者通常我立即将线程置于睡眠状态,那么 curl_global_init - 不能被调用?
还有一个难以理解的时刻:
如果你还没有调用 curl_global_init,curl_easy_init会自动调用。这在多线程情况下可能是致命的,因为 curl_global_init 不是线程安全的,并且由于缺乏适当的清理可能导致资源问题。
它没有明确说明,但我是否正确理解在 curl_easy_init() 之前调用 curl_global_init() 会告诉 curl_easy_init() 不要调用 curl_global_init() ?
这正是它的意思。
它在这里说,是的。什么样的流量都无所谓,反正你做不到。
另一件事是,这很可能不是真的,他们只是在谨慎行事。下面有一个解释:
那些。他们调用其他一些库的非线程安全函数,并且担心你的线程也会调用它们。您可以找出这些库是什么,并特别避免在并行流中使用它们。