Skip to content
/ libeco Public

基于协程实现的C++ 11高性能事件驱动网络框架.

License

Notifications You must be signed in to change notification settings

CandyMi/libeco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libeco

基于协程实现的C++ 11高性能事件驱动网络框架.

Features

  • HOOK的系统调用包括 : sendrecvacceptconnectsocketsocketpairpipe等.

  • 支持任性的创建海量的定时器, 使用紧凑的结构实现而不用担心内存占用等问题.

  • 基于协程的同步非阻塞逻辑编写模式, 比异步与回调的模型更加容易编写业务与库.

  • 内部自实现的DNS请求与解析协议与Hosts缓存机制, 不用担心封装业务不完善的问题.

Build

1. 创建目录

mkdir -p build && cd build

2. 检查环境与编译

cmake .. && make

3. 安装到文件夹

make install

4. 清理

make clean

Build Arguments.

cmake .. 构建命令的尾部可以增加下列参数:

宏名称 命令行语法 实际含义
ECO_RELEASE -DECO_RELEASE=1 使用RELEASE模式编译(默认为DEBUG)
ECO_OPENSSL -DECO_OPENSSL=1 告知链接HOOKopensslAPI
ECO_JEMALLOC -DECO_JEMALLOC=1 告知链接使用jemalloc
ECO_TCMALLOC -DECO_TCMALLOC=1 告知链接使用tcmalloc

例如:

[root@Server:~/libeco/build] cmake .. -DECO_RELEASE=1 && make && make install

Example

1. 创建多个协程.

#include <iostream>
#include <eco.hpp>

int main(int argc, char const *argv[])
{
  eco::eco_run([]{

    eco::eco_fork([]{
      std::cout << "Hello ";
    });

    eco::eco_fork([]{
      std::cout << "c plus plus ";
    });

    eco::eco_fork([]{
      std::cout << "!" << std::endl;
    });

  });
  return 0;
}

2. 创建多个定时器

#include <iostream>
#include <eco.hpp>

int main(int argc, char const *argv[])
{
  eco::eco_run([]{

    eco::eco_fork([]{
      std::cout << "定时器`1`休眠1秒" << std::endl;
      eco::eco_sleep(100);
      std::cout << "定时器`1`休眠结束" << std::endl;
    });

    eco::eco_fork([]{
      std::cout << "定时器`2`休眠1秒" << std::endl;
      eco::eco_sleep(100);
      std::cout << "定时器`2`休眠结束" << std::endl;
    });

    eco::eco_fork([]{
      std::cout << "定时器`3`休眠1秒" << std::endl;
      eco::eco_sleep(100);
      std::cout << "定时器`3`休眠结束" << std::endl;
    });

  });
  return 0;
}

Notice

文档可能会因为过期而更新, 请在任何情况下以实际代码为准。

LICENSE

MIT License

About

基于协程实现的C++ 11高性能事件驱动网络框架.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published