大申
利剑无意,软剑无常,重剑无锋,木剑无滞,无剑无式。
posts - 4,comments - 0,trackbacks - 0
   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)  编辑 收藏 引用 所属分类: 开源框架

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理