CxxFiber: 一款强大且易用的 C++ 协程库 特点 * 跨平台:同时支持 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; }