多线程时候,注意初始化和超时功能使用
1.必须在最开始调用:
curl_global_init(CURL_GLOBAL_ALL);
2.
多线程对超时功能支持对有影响,例如curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30L),
必须配合调用这个:
easy_setopt(curl, CURLOPT_NOSIGNAL, (long)1);
3.以上第2点导致了DNS解析不支持超时,只能采用c-ares支持。
本文详细介绍了在多线程环境下使用cURL进行网络请求时,如何正确设置超时功能以避免信号处理问题,并探讨了DNS解析的超时限制及替代方案。在多线程应用中,初始化cURL和配置CURLOPT_TIMEOUT参数时,需禁用信号处理以防止意外中断。然而,这会导致DNS解析无法超时,需借助c-ares库来实现DNS超时功能。
多线程时候,注意初始化和超时功能使用
1.必须在最开始调用:
curl_global_init(CURL_GLOBAL_ALL);
2.
多线程对超时功能支持对有影响,例如curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30L),
必须配合调用这个:
easy_setopt(curl, CURLOPT_NOSIGNAL, (long)1);
3.以上第2点导致了DNS解析不支持超时,只能采用c-ares支持。

被折叠的 条评论
为什么被折叠?
