# CxxFiber
**Repository Path**: chenwenbin_admin/CxxFiber
## Basic Information
- **Project Name**: CxxFiber
- **Description**: C++协程库. A powerful c++ fiber library.
- **Primary Language**: C++
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 17
- **Created**: 2017-06-09
- **Last Updated**: 2020-12-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CxxFiber
##C++ fiber library
*chinese version: [简体中文](README.zh_cn.md)*
### Table of Contents
- [Characteristics](#characteristics)
- [Example](#example)
- [Performance](#performance)
- [Dependency](#dependency)
- [TODO](#todo)
- [Support](#support)
####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 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](test/testeco.cpp)
####Performance
`software environment:`
@see c++ example code: [benchmark.cpp](test/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:`

####Dependency
`CxxFiber` is based on [CxxJDK](https://github.com/cxxjava/cxxjdk).
####TODO
win64 support.
####Support
Email: [cxxjava@163.com](mailto:cxxjava@163.com)