Fiberized.IO

通用C++网络库
授权协议 BSD
开发语言 C/C++
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 左丘积厚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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();
}
  • IO有Buffered IO 和 Direct IO: buffered IO:在读写的时候回经过一个page Cache Direct IO:是绕过page Cache,直接对磁盘操作,所以性能会差些。 查了一下,发现其实就是Buffered IO和Direct IO。  这两者有何区别呢? 打个比方:正常情况下磁盘上有个文件,如何操作它呢? - 读取:硬盘->内核缓冲区->用户缓冲区 - 写回

  • 以前用過 dd – http://benjr.tw/458, hdparm – http://benjr.tw/450 或是 Iometer – http://benjr.tw/370 來測試 Disk I/O 的是速度,但 dd, hdparm 太過簡單,Iometer 太過老舊 ,目前看到一套 Fio – Flexible I/O Tester 的 Disk I/O 測試工具. Ubuntu

  • Pending IO in PreOperation Callback<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   n  FltCompletePendedPreOperation() n  Must call this to restart processing of IO pende

  • 代码: 1 int Scan() //输入外挂 2 { 3 int res=0,ch,flag=0; 4 if((ch=getchar())=='-') 5 flag=1; 6 else if(ch>='0'&&ch<='9') 7 res=ch-'0'; 8 while((ch=getchar())>='0

  • 通过IOBUF将双向dio数据分离成要输入到FPGA中的di_d和从FPGA获得do_o. IOBUF的控制位T为高时FPGA输入I端口数据使能,为低时输出O使能。 IOBUF#(       .DRIVE(12), // Specify the output drivestrength       .IOSTANDARD("DEFAULT"), //Specify the I/O stand

  • 2022-10-20 10:43:59,633 ERROR org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: starting log segment 946759 failed for (journal JournalAndStream(mgr=FileJournalManager(root=/data/hadoop/hdfs/na

  •         文件IO和标准IO主要的区别在于有无缓冲区,标准IO在进行系统调用操作时,会先操作缓冲区,而文件IO则直接进行系统调用。(常见的系统调用write、read、printf等)         标准IO:在操作文件的时候,先操作缓冲区,在进行系统调用。在缓冲区满了或者有换行符的时候进行系统调用操作,比如读写操作。前者为全缓冲,后者为行缓冲。         文件IO:在操作文件的时候

 相关资料
  • 用途: 提供对网络通信的访问 Addressing, Protocol Families and Socket Types Looking up Hosts on the Network Finding Service Information Looking Up Server Addresses IP Address Representations TCP/IP Client and Serve

  • 本文向大家介绍利用C#实现网络爬虫,包括了利用C#实现网络爬虫的使用技巧和注意事项,需要的朋友参考一下 网络爬虫在信息检索与处理中有很大的作用,是收集网络信息的重要工具。 接下来就介绍一下爬虫的简单实现。 爬虫的工作流程如下 爬虫自指定的URL地址开始下载网络资源,直到该地址和所有子地址的指定资源都下载完毕为止。 下面开始逐步分析爬虫的实现。 1. 待下载集合与已下载集合 为了保存需要下载的URL

  • git 提供相当灵活的协作方式,最常见的方式为:协作者获得原始版本库的镜像,并在上面工作;发起者从协作者那里获取更新 协作者通过git clone创建一个镜像版本库: git clone user@url:~/path [local] 网络对于 git 来说是透明的,凡是可以访问的位置,如 http、ftp、ssh……,甚至本地路径,对于 git 来说没有什么区别。 通过以下命令,创建一个本机原

  • 本文向大家介绍c++ 网络库asio的优势,包括了c++ 网络库asio的优势的使用技巧和注意事项,需要的朋友参考一下 如果说答案是性能,那么肯定有人会满不在乎。觉得性能不够的话, 只要加机器就可以了。 然而更少的机器,意味着更低的能耗,更少的硬件投入,更少的人力资源投入去维护机器。总而言之,更低的成本。 肯定会有人说,C++的开发速度太慢了。然而这并不是绝对的。C++也可以做到非常快速的开发。有

  • 本文向大家介绍c# 网络编程之http,包括了c# 网络编程之http的使用技巧和注意事项,需要的朋友参考一下 一、概述 本文目的是通过C#代码提供一个HTTP服务,正常情况下如果我们需要向外界提供HTTP服务,常规做法就是通过ASP.NET来实现,有时我们的应用程序或Windows服务需要向外提供一些简单的HTTP服务就可以自己实现,从而避免部署IIS增加系统复杂性。这里必须强调是一些简单的应用

  • 本文向大家介绍c# 网络编程之tcp,包括了c# 网络编程之tcp的使用技巧和注意事项,需要的朋友参考一下 一、概述 UDP和TCP是网络通讯常用的两个传输协议,C#一般可以通过Socket来实现UDP和TCP通讯,由于.NET框架通过UdpClient、TcpListener 、TcpClient这几个类对Socket进行了封装,使其使用更加方便, 本文就通过这几个封装过的类讲解一下相关应用。