libevent源码剖析之一(libevent亮点)
前言
Libevent 可能大家都可能听说过,可是大家知道内部的实现细节吗?咱们就来开几篇文章来讲讲libevent源码。本文只是简单的介绍下libevent的优点。
亮点
libevent有几个明显的优点:
事件驱动(event-driven),高性能;注册事件分优先级;支持 I/O,定时器和信号等事件信息;跨平台,支持多操作系统,例如:Linux,Windows,Mac;源代码比较易懂,易读;轻量级,专注于网络,不如 ACE 那么臃肿巨大;支持多种I/O复用,poll,select,epoll等等。
Libevent 已经被广泛的应用,作为底层的网络库;比如 Netchat、Vomit、Nylon、memcached等等。
学习好处
学习 libevent 有助于提升程序设计功力,除了网络程序设计方面外, Libevent 的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏、函数指针、 c 语言的多态支持、链表和堆等等,都有助于提升自身的程序功力。
程序设计不止要了解框架,很多细节之处恰恰也是事关整个系统成败的关键。只对libevent 本身的框架大概了解,那或许仅仅是一知半解,不深入代码分析,就难以了解其设计的精巧之处,也就难以为自己所用。
事实上 Libevent 本身就是一个典型的 Reactor 模型,理解 Reactor 模式是理解 libevent的基石;因此下一节将介绍典型的事件驱动设计模式——Reactor 模式。
好了,本文就到这里了。以后的文章我尽量简短扼要,欢迎提建议!
本文原创,转载标明出处。