你有几个邮箱呢?你是怎么分配它们的用途呢?码云账号增加多邮箱支持!
指数
0
Watch 21 Star 36 Fork 10

cxxjava / CxxFiberC++Apache-2.0

加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
A powerful c++ fiber library. 展开 收起

克隆/下载
cxxjava 最后提交于 release v0.4.2
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.zh_cn.md

CxxFiber

C++协程库.

英文版本: English

目录

特点

  • 跨平台:同时支持Linux32/64、OSX64两个平台,支持C++98;
  • 高性能:网络性能强劲,支持海量协程,从此单机1000K不再是问题;
  • 易开发:同步的方式编写代码,API优雅简洁、简单易用、开发高效;
  • 强融合:支持进程、线程、协程的混合使用,各司其职,充分发挥各自优点;

示例

c++:

#include "Eco.hh"

int main(int argc, const char **argv) {
  // CxxJDK init.
  ESystem::init(argc, argv);
      
  try {
  	EFiberScheduler scheduler;
  	
  	scheduler.schedule([&](){
  		EServerSocket ss;
  		ss.setReuseAddress(true);
  		ss.bind(8888);

  		while (!gStopFlag) {
  			// accept
  			sp<ESocket> socket = ss.accept();
  			if (socket != null) {
  				// 创建新的协程
  				scheduler.schedule([=](){
  					try {
  						char buf[512] = {0};
  						// read
  						EInputStream* is = socket->getInputStream();
  						int n = is->read(buf, sizeof(buf));
  						printf("read buf=%s\n", buf);

  						// write
  						EOutputStream* os = socket->getOutputStream();
  						os->write(buf, n);
  					} catch (EIOException& e) {
  						e.printStackTrace();
  					} catch (...) {
  					}
  				});
  			}
  		}
  	});

  	// 开始协程调度
  	scheduler.join(); //单线程调度模式
  	//scheduler.join(4); //多线程调度模式:参数4表示并发调度的线程数
  }
  catch (EException& e) {
  	e.printStackTrace();
  }
  catch (...) {
  	printf("catch all...\n");
  }
  
  ESystem::exit(0);
  
  return 0;
}

更多示例:
testeco.cpp

性能

软件环境:

见示例c++代码:benchmark.cpp

硬件环境:

型号名称:	MacBook Pro
型号标识符:	MacBookPro10,2
处理器名称:	Intel Core i5
处理器速度:	2.6 GHz
处理器数目:	1
核总数:	2

测试结果:

benchmark

依赖

CxxFiber基于CxxJDK开发.

TODO

支持Win64平台。

Support

Email: cxxjava@163.com

点评 ( 0 )

你可以在登录后,发表评论

搜索帮助