Linux服务器必须处理I/O事件、信号和定时器三类事件源,在处理该三类事件时通常需要考虑:1)统一事件源;2)跨平台/可移植性;3)对大并发连接的支持。对此,开源社区提供了诸多优秀的I/O框架库,如ACE、asio、libevent和libev等。上述各库实现原理基本类似,要么以Reactor模式实现,要么以Proactor模式实现,或者同时以这两类模式实现。本文只对libevent库做说明。
基于Reactor模式的I/O框架库包含以下组件:句柄(即事件源)、事件多路分发器(主要实现注册/删除/等待事件)、事件处理器(实现就绪事件发生时的事件处理:回调函数方式)和Reactor实例(综合运用前三种组件,对外提供注册/删除事件、执行事件循环--等待事件、处理就绪事件)。
libevent特点:跨平台、统一事件源、线程安全、基于Reactor模式。
libevent由下列组件构成:evutil、event/event_base、bufferevent/evbuffer、evhttp、evdns和evrpc。其中libevent的HTTP实现并不是Apache HTTP服务器的替代品,而是适用于与云和web环境相关联的大规模动态内容的实用解决方案。
对于libevent库的使用技巧,参考
http://www.wangafu.net/~nickm/libevent-book/TOC.html。至于想要掌握其内部实现,那就需要自行跟踪源码了。
posted on 2014-09-09 16:18
大申 阅读(244)
评论(0) 编辑 收藏 引用 所属分类:
开源框架