川山甲

追求内心的非常平静!瞬间清空所有的杂念,达到物我两忘!

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理
  105 随笔 :: 0 文章 :: 1591 评论 :: 82万 阅读
 
背景
 
  结合上一篇CLion之C++框架篇-优化框架,引入boost(三),继续进行框架优化!在项目中,我们经常会通过get方式拉取第三方资源,这一版优化引入类库curl,用来拉取第三方资源库。
 
  开源框架代码:https://github.com/rtxbc/cplus/tree/master/work
 
配置使用
 
  

  

使用
 
设定头部文件:
 

 

  

注意:get方法中增加了retries重试机制。在实现中看一下细节!

 

  

测试代码:

 

  

 

CURL 注意事项
 

 1、解决线程安全及避免core错误问题方式

  1) curl_global_init()在多线程环境下,是线程不安全的。所以在多线程环境下,要在主线程中调用这个方法。配套的,在主线程中调用curl_global_cleanup()方法。

  2)curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); 控制域名解析的超时,其需要一个sigjmp_buf型的全局变量,多线程时会修改它。

  3)  curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);默认情况下libcurl完成一个任务以后,出于重用连接的考虑不会马上关闭。如果没有新的TCP请求来重用这个连接,那么只能等到CLOSE_WAIT超时,这个时间默认在7200秒甚至更高,太多的CLOSE_WAIT连接会导致性能问题

 2、要想让curl_easy_perform(),能够执行,必须得有个配套方法curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply);

 
 
推荐
posted on   川山甲  阅读(3193)  评论(2编辑  收藏  举报
点击右上角即可分享
微信分享提示