基于curl的异步http实现

简述用于windows客户端的一个异步http模块的实现

1.需要实现的feature

1.1 很容易地发起异步http请求,然后回调。
1.2 能够管理http并发数。
1.3 能够支持http超时:不依赖于curl中实现的连接超时及其它超时。
1.4 请求可以取消。


2.参与者和简要分析:
Manager:接收http请求,调用curl。
Request:封装http请求。
Response:封装http回应。


线程模型:
这里实现异步一般会开线程,假定有一个UI(主)线程,可能有这些模式:
Manager在UI线程中管理若干个工作线程,curl_easy接口。
Manager在自己新起的http线程中管理若干个工作线程,curl_easy接口。
Manager在自己新起的http线程中调用curl_multi接口。


Manager在UI线程中调用curl_multi接口不合适,因为需要占用UI线程时间去select。
开多个work线程浪费资源,线程管理难度大,线程并发度的减少不会造成性能瓶颈,
因为主要耗时在网络IO上。


所以选定模型是:开一个http线程,在上面调用curl_multi接口。


解决回调问题:
这里会遇到两个问题,一个是回调的线程问题:在http中检测到IO完成,
如果直接在http中进行回调
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值