Fiberized.IO 是一个基于 Fiber 和 Async I/O 的通用 C++ 网络库。
在上层,Fiberized.IO 提供一个兼容 C++11 thread 和 iostream 的“阻塞式”API;在底层,Fiberized.IO 通过将阻塞式 IO 映射为异步 IO 和 kernel/userland 混合调度的 Fiber,在最大化程序的运行效率的同时保持用户的程序清晰简单易于理解。
除基本的功能之外,Fiberized.IO 还包含了一个完整的HTTP服务框架,一个 Redis 客户端,以及 Apache Thrift 的支持,未来计划支持常见的数据库如 MySQL 和 MongoDB 等。
一个 HTTP 服务器示例代码:
#include <fibio/fiberize.hpp> #include <fibio/http_server.hpp> using namespace fibio::http; bool handler(server::request &req, server::response &resp) { resp.body_stream() << "<HTML><BODY><H1>" << req.params["p"] << "</H1></BODY></HTML>" << std::endl; return true; } int fibio::main(int argc, char *argv[]) { server svr(server::settings{ route(path_("/*p") >> handler), 23456, }); svr.start(); svr.join(); }