首页 > 编程语言 >为什么有很多出名开源的C/C++方面的高性能网络库,比如libevent,boost-asio,有些企业还要自己写?

为什么有很多出名开源的C/C++方面的高性能网络库,比如libevent,boost-asio,有些企业还要自己写?

时间:2024-04-19 16:48:40浏览次数:27  
标签:asio C++ 开源 高性能 libevent boost

为什么有很多出名开源的C/C++方面的高性能网络库,比如libevent,boost-asio,有些企业还要自己写?

        我个人很倾向用著名的开源软件来完成功能需求,但是发现在实际开展中很多人会反对开源,而要求自己实现一套,我不知道是我考虑太少,还是他们太武断。  

因为 KPI 的原因更多吧,除开少部分特殊的场景,asio/libevent 会不够用?

建议尽量使用通用方案,比如 C++项目尽量用 asio,C项目用 libevent(对比 libev 实现了自己的 buffer)。

理由就是,通用性强,稳定,功能够用。照前面的人说的,不要迷信什么大牛说的话,asio/libevent 各种被项目实实际际的上生产线,用真金白银来支持,综合水平肯定是很高的。

另外一点就是不分裂的库很容易衍生一些其他好用的功能,像在 Go 里面大家都基于 net.Conn 来做文章,接入一些三方网络库 cmux/smux 非常自然。这个在 C++ 做的很差,其实 asio 足够强大,完成这些功能很简单,就是因为不统一导致根本没人做。

顺便再吐槽一下陈硕的回答,高性能的前提是功能满足要求的,所谓软件工程没有银弹,5000行代码能实现多少功能?在 muduo 里面还包括了一套自己实现的线程/锁/条件变量/日志的逻辑?举个例子,muduo 在 listen 失败的时候直接打一条 fatal 日志这种骚操作看起来就是偷懒行为。都出现 fatal 日志了,理论这个服务就该停止了,如果我这个服务是一个动态监听的逻辑,那应该怎么处理?返回错误值或者抛异常是不是更好的选择(刚好 asio 都支持)?

标签:asio,C++,开源,高性能,libevent,boost
From: https://www.cnblogs.com/sexintercourse/p/18146299

相关文章

  • 美国政府敦促开发者:停止使用 C、C++
    美国政府敦促开发者:停止使用C、C++开源Linux​ ​关注他 5人赞同了该文章整理|屠敏出品|CSDN(ID:CSDNnews)“C、C++不安全,新应用开发时就别用了,旧应用应该采取迁移行动”,近日,美国白宫国家网络主任办公室(ONCD)在一份主题为《回到基础构件:通......
  • 音视频开发是不是C++开发中最难的细分方向?
    音视频开发是不是C++开发中最难的细分方向?     关注者611被浏览599,438关注问题​写回答​邀请回答​好问题7​3条评论​分享​  查看全部67个回答luluce不关心国事的程序猿(不会QT)。已关注......
  • C++六种内存序详解
    前言要理解C++的六种内存序,我们首先须要明白一点,处理器读取一个数据时,可能从内存中读取,也可能从缓存中读取,还可能从寄存器读取。对于一个写操作,要考虑这个操作的结果传播到其他处理器的速度。并且,编译器的指令重排和CPU处理器的乱序执行也是我们需要考虑的因素。 我们先看......
  • [8] UE C++ Mario
    创建了盒子,定义了盒子的碰撞位置能在if里面直接声明赋值局部变量但不能赋值成员变量friend关键词应用导入类的时候如果是灰色就删掉,并且查看头文件 ......
  • c++函数模板和运行机制
    C++_templatec++提供了函数模板(functiontemplate.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函......
  • c++ double进行精度截取 (转)
    使用boost/multiprecision/cpp_dec_float.hpp #include<boost/multiprecision/cpp_dec_float.hpp>usingboost::multiprecision::number;usingboost::multiprecision::cpp_dec_float_50;intmain(){cpp_dec_float_50v1("5726.867366095");......
  • C++ 类方法解析:内外定义、参数、访问控制与静态方法详解
    C++类方法类方法,也称为成员函数,是属于类的函数。它们用于操作或查询类数据,并封装在类定义中。类方法可以分为两种类型:类内定义方法:直接在类定义内部声明和定义方法。类外定义方法:在类定义内部声明方法,并在类外部单独定义方法。类内定义方法在类定义内部可以直接声明和......
  • [10] UE C++ 拓展知识
    SaveGame//--USnakeSaveGame.hUCLASS()classSNAKE_APIUSnakeSaveGame:publicUSaveGame{GENERATED_BODY()public:UPROPERTY()int32GameScore;UPROPERTY()FStringName;UPROPERTY()TArray<int32>Numbers;FStringSlotName;......
  • Qt 6.5.5 链接和QML与C++交互的若干问题
    需求描述QtQuick开发桌面组件,使用讯飞API(提供头文件、静态库、动态库),希望部署到Windows平台,在QtCreator开发。QML与C++交互主要参考:QML与CPP,https://blog.csdn.net/gongjianbo1992/article/details/87965925另有参考:信号与槽,https://blog.csdn.net/ifeng12358/article/detai......
  • 深入分析C++对象模型之移动构造函数
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。C++11新标准中最重要的特性之一就是引入了支持对象移动的能力,为了支持移动的操作,新标准引入了一种新的引用类型——右值引用,右值引用一......