发布一个基于libuv &&modern c++ 编写的网络库

uv-cpp是一个轻量级、高性能的C++网络库,它封装了libuv并提供了C++风格的回调、线程安全的跨线程write操作、定时器、时间轮以及整包发送/接收协议机制。库的设计简洁易用,避免了libuv的C语言回调限制,优化了线程安全和内存管理,适用于需要高效网络组件的项目。
摘要由CSDN通过智能技术生成

uv-cpp是一个基于libuv的C++封装网络库,基于本人实际项目需求开发并使用。接口较为简单易用,并对libuv一些特性做了扩展及优化。压测结果稳定、高效。暂未发现内存泄漏及崩溃等相关bug。

  • 为什么需要封装libuv

截至目前,C++没有标准网络库,常见的有ACE和boost.asio。ACE较为庞大臃肿,封装复杂,个人不推荐。boost.asio是boost库的一部分,需要依赖boost的部分实现,使用asio需要在项目引入较为庞大的boost库(虽然也可以脱离boost,个人不太习惯asio的接口)。而C语言的网络库主要有libevent、libev及libuv。libuv是nodejs的底层,较为成熟。所以如果在项目需要一套轻量级,且没有太多依赖的网络组件,最好的办法,还是自己封装一套。

1.实现了C++功能的回调

首先libuv是一个C语言库,意味着回调函数是C语言的回调,所以直接使用libuv网络消息回调,相关对象必须是全局的或者static对象,这是令人难以容忍的。这里通过libuv的用户数据功能实现了C++风格的回调,回调函数可以类成员函数,或者lambda。同时封装了TcpServer及TcpClient等类,简化编程。

2.对线程安全做了优化

libuv是一个非线程安全的库ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值