您当前的位置: 首页 > 

鱼儿-1226

暂无认证

  • 1浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

CURLE_OPERATION_TIMEDOUT libcurl 错误码28– 操作超时

鱼儿-1226 发布时间:2021-04-21 17:58:31 ,浏览量:1

在多线程情况下出现错误码28 是因为没有调用全局初始化函数

 

static int GlobleInit();//全局初始化,主程序调用一次,只能一次  static void GlobleFint();

int CHttpClient::GlobleInit()//全局初始化,主程序调用一次 {  return curl_global_init(CURL_GLOBAL_ALL); } void CHttpClient::GlobleFint() {  curl_global_cleanup(); }

 

在调应libcurl库中其他函数之前,必须先调用这个函数对编程环境进行相应的初始化,使每个程序调用libcurl库函数都具有相同的效果。这个按位组合选择的整形(int)变量可以精确告诉libcurl当下的需要的工作模式。详细情况,如果你不是十分熟悉整体参数的初始化,您可以设置参数为CURL_GLOABL_ALL。对所有的需要用到的环境进行初始化,这个函数不是安全线程,在多线程应用中,需要在主线程中调用这个函数。这个函数设置libcurl所需的环境。通常情况,如果不显式的调用它,第一次调用 curl_easy_init()时,curl_easy_init 会调用 curl_global_init,在单线程环境下,这不是问题。但是多线程下就不行了,因为curl_global_init不是线程安全的。在多个线 程中调用curl_easy_int,然后如果两个线程同时发现curl_global_init还没有被调用,同时调用 curl_global_init,悲剧就发生了。这种情况发生的概率很小,但可能性是存在的。

关注
打赏
1604459285
查看更多评论
立即登录/注册

微信扫码登录

0.1236s