Libevent源码深度剖析之一:序幕

image

转自:https://blog.csdn.net/sparkliang/article/details/4957667

1.1 前言

Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。

附带一句:Libevent是用c语言编写的(MS大牛们都偏爱c语言哪),而且几乎是无处不函数指针,学习其源代码也需要相当的c语言基础。

1.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;这也是本文参照的版本。

1.3 学习libevent的好处

学习libevent有助于提升程序设计功力,除了网络程序设计方面外,Libevent的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏、函数指针、c语言的多态支持、链表和堆等等,都有助于提升自身的程序功力。

程序设计不止要了解框架,很多细节之处恰恰也是事关整个系统成败的关键。只对libevent本身的框架大概了解,那或许仅仅是一知半解,不深入代码分析,就难以了解其设计的精巧之处,也就难以为自己所用。

事实上Libevent本身就是一个典型的Reactor模型,理解Reactor模式是理解libevent的基石;因此下一节将介绍典型的事件驱动设计模式——Reactor模式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 并发IO问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接Fork进程,到Worker进程池/线程池,到现在...
    零一间阅读 1,740评论 1 34
  • 出处:韩天峰 网址:rango.swoole.com/archives/508 并发IO问题一直是后端编程中的技术...
    meng_philip123阅读 2,413评论 1 38
  • 首先,作为一个女生,特别是作为一个被广告花言巧语就被哄到没有意志的人。。。皮肤又差的人。。。钱包又没有志气的人。。...
    花占糖阅读 523评论 0 1
  • 一、今天是什么日子 2019.06.19 周三 起床:6:20 天气:晴 心情:平静 纪念日: 二、任务清单 (...
    优雅的老太太36阅读 206评论 2 0
  • 早晨游泳出来,坐在大厅乳白色的藤椅上小憩。旁边有一约八旬老者,身高七尺,一头银发,和善的脸上眉眼儿端正。 他指着进...
    沙宇飞阅读 601评论 0 4