住建部工程建设标准网站,上海室内设计事务所,布吉商城网站建设,做网站还能赚钱ACE “重量级的C I/O框架#xff0c;用面向对象实现了一些I/O策略和其它有用的东西#xff0c;特别是它的Reactor是用OO方式处理非阻塞I/O#xff0c;而Proactor是用OO方式处理异步I/O的( In particular, his Reactor is an OO way of doing nonblocking I/O, and Proactor … ACE “重量级的C I/O框架用面向对象实现了一些I/O策略和其它有用的东西特别是它的Reactor是用OO方式处理非阻塞I/O而Proactor是用OO方式处理异步I/O的( In particular, his Reactor is an OO way of doing nonblocking I/O, and Proactor is an OO way of doing asynchronous I/O). ” 从很多实际使用来看ACE是一个很值得学习的网络框架但由于它过于重量级导致使用起来并不方便。 ACE中提出了两种网络模式Proactor和Reactor。 ASIO “C的I/O框架逐渐成为Boost库的一部分。it’s like ACE updated for the STL era。” 支持select、epoll、IOCP等IO模型 libevent 由Niels Provos用C编写的一个轻量级的I/O框架。它支持kqueue和select、poll和epoll。 1.4.11版还不支持windows的IOCP但已经有很多开发者自己修改源码把IOCP合并进去。 C10K问题与解决之道 一台服务器如何同时处理一万个以上的客户端这就是著名的C10K问题这个问题曾经困扰过很多服务器的架构师但这种困扰随着时间的推移早已成为了过去。 网络的众多模型中有些适合简单处理有些适合复杂应用而C10K问题考验的则是网络框架的并发和大连接处理能力异步I/O虽然也是为并发和大连接设计但目前aio并不支持socket所以目前最适合的解决方案是I/O复用。 I/O复用最初在解决C10K问题时也并不出色随着连接数的增加处理单个socket请求所花费的事件也迅速增加但kqueue和epoll的出世后I/O复用成为了C10K问题的首选方案下图是libevent给出的测试数据 从图中可以看出select、poll随着需要处理的连接数横轴增多处理单个连接的时间明显变长而epoll和kqueue的表现则非常优秀。