I/O 框架
以下所列的为几个包装好的库,它们抽象出了一些下面所表达的技术,并且可以使你的代码与具体操作系统隔离,从而具有更好的移植性。
· ACE, 一个重量级的C++ I/O框架,用面向对象实现了一些I/O策略和其它有用的东西,特别的,它的Reactor框架是用OO方式处理非阻塞I/O,而Proactor框架是用OO方式处理异步I/O的。
· ASIO 一个C++的I/O框架,正在成为Boost库的一部分。它像是ACE过渡到STL时代。(译注:ACE内部有自己的容器实现,它和C++ 标准库中的容器是不兼容的。)
· libevent 由Niels Provos用C 语言编写的一个轻量级的I/O框架。它支持kqueue和select,并且很快就可以支持poll和epoll(翻译此文时已经支持)。我想它应该是只采用了水平触发机制,该机制功过参半。Niels给出了 一张图 来说明时间和连接数目在处理一个事件上的功能,从图上可以看出kqueue和sys_epoll明显胜出。
· 我本人也尝试过写一个轻量级的框架(很可惜没有维持至今):
o Poller 是一个轻量级的C++ I/O框架,它使用任何一种准备就绪API(poll, select, /dev/poll, kqueue, sigio)实现水平触发准备就绪API。以其它 不同的API为基准,Poller的性能好得多。该链接文档的下面一部分说明了如何使用这些准备就绪API。
o rn 是一个轻量级的C I/O框架,也是我继Poller后的第二个框架。该框架可以很容易的被用于商业应用中,也容易的适用于非C++应用中。它如今已经在几个商业产品中使用。
· 2000年4月,Matt Welsh就构建服务器如何平衡工作线程和事件驱动技术的使用方面写了一篇 论文,在该论文中描述了他自己的Sandstorm I/O框架。
· Cory Nelson's Scale! library - 一个Windows下的异步套接字,文件和管道的I/O库。
|