libevent源码深度剖析一
2016-05-07 22:36
267 查看
libevent源码深度剖析一
——序幕张亮
1 前言
Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。附带一句:Libevent是用c语言编写的(MS大牛们都偏爱c语言哪),而且几乎是无处不函数指针,学习其源代码也需要相当的c语言基础。
2 Libevent简介
上来当然要先夸奖啦,Libevent 有几个显著的亮点:事件驱动(event-driven),高性能;
轻量级,专注于网络,不如ACE那么臃肿庞大;
源代码相当精炼、易读;
跨平台,支持Windows、Linux、*BSD和Mac Os;
支持多种I/O多路复用技术, epoll、poll、dev/poll、select和kqueue等;
支持I/O,定时器和信号等事件;
注册事件优先级;
Libevent已经被广泛的应用,作为底层的网络库;比如memcached、Vomit、Nylon、Netchat等等。
Libevent当前的最新稳定版是1.4.13;这也是本文参照的版本。
3 学习的好处
学习libevent有助于提升程序设计功力,除了网络程序设计方面外,Libevent的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏、函数指针、c语言的多态支持、链表和堆等等,都有助于提升自身的程序功力。程序设计不止要了解框架,很多细节之处恰恰也是事关整个系统成败的关键。只对libevent本身的框架大概了解,那或许仅仅是一知半解,不深入代码分析,就难以了解其设计的精巧之处,也就难以为自己所用。
事实上Libevent本身就是一个典型的Reactor模型,理解Reactor模式是理解libevent的基石;因此下一节将介绍典型的事件驱动设计模式——Reactor模式。
参考资料:
Libevent: http://monkey.org/~provos/libevent/
原文地址:/article/1682495.html
相关文章推荐
- 观察者模式(行为型)
- 20150307+Linux2+vi操作快捷键-01
- linux环境中cacti安装:
- 62. Unique Paths 唯一路径的条数
- Android 真机测试无法打印Log日志的解决方案
- Executor框架结构与主要成员(一)
- Building 'XXX' Gradle project info的android studio问题
- HDU 2648 Shopping
- hiho_1041 国庆出游
- 技术入股创业注意事项
- RHEL6.2下挂载光驱安装软件
- 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组
- CSDN-markdown编辑器语法速查
- 使用深度搜索分析心理调查问卷的研究
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?----转
- Charles的使用
- hdoj-2190-悼念512汶川大地震遇难同胞——重建希望小学
- android获取应用程序判断是系统程序还是应用程序并且判断在sd卡中还是内存中
- 《java入门第一季》之面向对象(形式参数和返回值问题深入研究1)
- 《java入门第一季》之面向对象(形式参数和返回值问题深入研究1)