GithubHelp home page GithubHelp logo

cxxfiber's Introduction

CxxFiber

C++ fiber library

chinese version: 简体中文

Table of Contents

Characteristics

  • Cross platform: support Linux32/64, OSX64, support C++98;
  • High performance: network performance is strong, support massive co process, since then no C1000K problem;
  • Easy development: synchronous code, API elegant simplicity and efficient development;
  • Mixed programming support process, threads and coroutines mixed use, carry out their duties:

Example

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) {
  				// create a new fiber
  				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 (...) {
  					}
  				});
  			}
  		}
  	});

  	// begin schedule
  	scheduler.join(); //signal thread mode
  	//scheduler.join(4); //multi thread mode: 4 is count of threads
  }
  catch (EException& e) {
  	e.printStackTrace();
  }
  catch (...) {
  	printf("catch all...\n");
  }
  
  ESystem::exit(0);
  
  return 0;
}

more examples:
testeco.cpp

Performance

software environment:

@see c++ example code: benchmark.cpp;

hardware environment:

Model Name:				MacBook Pro
Model Identifier:		MacBookPro10,2
Processor Speed:		2.6 GHz
Number of Processors:	1
Total Number of Cores:	2

test results:

benchmark

Dependency

CxxFiber is based on CxxJDK.

TODO

win64 support.

Support

Email: [email protected]

cxxfiber's People

Contributors

cxxjava avatar

Watchers

skyformat99 avatar  avatar

Forkers

skyformat99

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.