libhv源码分析

  • C demo:参考目录:examples
  • C++ demo:参考目录:evpp

啰嗦一句

如果作为服务器开发,不建议使用hv的log作为日志工具记录日志,因为该日志是同步写文件的,可能严重影响服务器效率,可以使用log4cplus或者其他。对于性能没有太高要求的程序,hvlog是一个便捷的开发工具。

目录结构分析

  • base目录:基于C实现跨平台的常用接口,例如线程,socket,时间计算,线程同步(mutext,rwlock)等
  • cpputil目录:基于C++实现部分常用函数功能封装,例如ini读取,线程池,单实例等
  • event目录:libhv的核心,封装了io,事件循环(实现思想和libevent类似),网络模型(epoll,iocp,select)的实现等。
  • ssl目录:对不同版本ssl的封装支持。
  • util目录:常用算法的实现,例如:md5,base64,sha1等
  • http,mqtt,protocol目录:基于tcp/udp对应用层协议的封装,后期可能更多
  • unittest目录:对功能接口的单元测试代码,例如base目录的线程
  • examples,evpp目录:基于C,C++的demo实例

libhv

libhv的基础代码封装:base目录cpputil 这部分目录可以作为通用移植代码,非常值得借鉴和学习。
里面对不同平台函数进行封装,例如:
hmutex.h对不同平台下的mutex进行封装。
list.h双向链表的通用版的封装,具体使用可参考:二叉堆算法实现
heap.h基于树的二叉堆封装,具体使用可参考:二叉堆算法实现
herr.h错误码的封装,直接借鉴学习。参考:如何优雅的定义错误码
hsocket.h对不同平台下常用socket的操作封装,例如windows下版本的socketpair

libhv loop源码分析可参考的博客:

  1. 事件的优先级机制custom evetn属于IO事件
  2. custom事件idle事件
  3. 定时器的简单说明heartbeat和keepalive
  4. 关于hloop_run的部分细节分析可以参考:创建一个简单的TCP服务器libhv学习笔记7:IO事件之write事件
  5. libhv学习路线 之 I/O复用

关于hv如何处理tcp shor write的问题,参考hio_write

更多源码分析参考:libhv

libhv教程,个人感觉git 源码demo更合适

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值