Skip to content

hankai17/my_sylar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0152cf8 · Jun 22, 2022
Dec 3, 2019
Apr 2, 2020
Mar 11, 2020
May 3, 2020
Jul 2, 2021
Jul 2, 2021
Jun 27, 2021
Jun 22, 2022

Repository files navigation

一个基于C++11简单易用的同步网络编程框架

项目特点

  • 基于C++11 避免使用裸指针 代码清晰简洁
  • 底层使用epoll ET 多线程模式处理网络IO
  • 使用无栈协程(swapcontext/boost协程等库)把非阻塞IO操作包装成同步模型 不同于以往以回调方式编程
  • 仅支持linux平台
  • 了解更多:sylar mordor

特性

  • 网络库
    • tcp/udp客户端 接口简单易用并且是线程安全的 用户不必关心具体的socket api操作
    • 对套接字多种操作的封装
  • 线程库
    • 互斥量
    • 信号量
    • 线程组
  • 工具库
    • yaml配置文件的读取
    • 内存池
    • 链接池
    • 简单易用的ssl加解密
    • 其他一些有用的工具

编译(Linux)

  • 我的编译环境

    • Centos6.9 64 bit + gcc7.1(最低gcc4.4.7)
    • CMake 3.7.2 (最低cmake2.8)
  • 编译安装 项目依赖

    • yaml解析 编译成动态库并安装 我也编译好了做成了rpm包直接安装即可百度云 提取码6kiu
    • Boost: yum install boost-devel.x86_64
    
    git clone https://github.com/hankai17/my_sylar.git
    mkdir build && cd build
    cmake ..
    make
    

QA 该库性能怎么样

  • 多线程下使用该库跑ss5代理 消耗1千万协程 无崩溃 没发现明显的内存泄漏
  • context切换测试 大概在50ns左右
  • 击鼓传花测试 参考pingpong_bench.cc libevent_bench.c 在花朵少的情况下my_sylar会低于libevent
  • pingpong测试 参考pingpong_qps.cc echo_server.cc 大概14000次/s
  • hook暂不支持poll 不支持getaddrinfo/gethostbyname

test

  • kcp简单案例 kcp_test.cc 为kcp客户端 kcp_server_test.cc 为kcp服务端
  • ss5测试 tunnel_test.cc 包含有p1 p2端

TODO

  • 协程线程绑定
  • tls1.3

联系方式