Netplus试图解决什么问题

Netplus致力于降低网络编程的门槛,通过简化对象管理、消除回调函数、隐藏平台差异和采用Pipeline处理消息。文章介绍了Netplus如何使用智能指针优化内存管理,通过Promise实现异步操作的同步表达,并借鉴Netty的Pipeline机制处理网络协议,提供跨平台支持。
摘要由CSDN通过智能技术生成

本文为初见,Netplus快速开始之PingPong Example系列第二篇


1. 背景

网络信息传递中的两个基本问题,即建立连接,传递消息,都已被各操作系统解决好了,各家的技术细节并不一样,暴露出来的接口虽有相似之处,但仍然难以做到一份代码,到处运行。一些代码库,如libuv, libevent,在系统兼容以及IO事件通知的上面做得非常优秀,然,从实际应用开发者的角度来看,它们仍然遗留了很多需要开发者自己去解决的问题,如跨平台的一些细节、IO事件处理、线程安全及性能调优、应用层协议的解析。而这些问题都涉及更多的知识以及编程经验,这就是门槛啊,任何试图降低门槛的努力都是有价值的,也肯定是值得的。

为降低门槛,Netplus在很多方面都做尝试。

2. Netplus为降低门槛进行的尝试

2.1 简化对象管理

对象管理是个古老的话题,各语言在这方面都做得相当出色,尤其是Java,需要的时候,我们new一个,不用的时候,直接置null, 这种简单直接的使用方式,着实迷人,c++是否也能如此呢?

c++在这方面也是努力,stl中有如下方案:

  • std::auto_ptr
  • std::unique_ptr
  • std::shared_ptr
  • std::weak_ptr
  • std::enable_shared_from_this

已经有这么多解决方案了,还没有解决好问题吗?为啥,Netplus又造轮子 ?

简单列一下理由如下:

  • 并没有解决好线程安全的问题。
  • shared_ptr使用不当会造成二次delete,最典型的当属如这样的代码,int* p=new int; std::shared_ptr<int>(p); std::shared_ptr<int>(p)。虽然这是一个错误的使用案例,但是我相信写过这样代码的人应该不少。
  • 有多种方式获取到raw_pointer,有了raw_pointer。特别是周期长,不段有新人加入的项目,鬼晓得会有人拿这个raw_p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值