libevent源码深度剖析一 序

系列目录

(1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使用场景和事件流程 (4)libevent源码深度剖析四 libevent源代码文件组织 (5)libevent源码深度剖析五 libevent的核心:事件event (6)libevent源码深度剖析六 初见事件处理框架 (7)libevent源码深度剖析七 事件主循环 (8)libevent源码深度剖析八 集成信号处理 (9)libevent源码深度剖析九 集成定时器事件 (10)libevent源码深度剖析十 支持I/O多路复用技术 (11)libevent源码深度剖析十一 时间管理 (12)libevent源码深度剖析十二 让libevent支持多线程 (13)libevent源码深度剖析十三 libevent信号处理注意点

1.前言

libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。 附带一句:libevent是用c语言编写的(大牛们都偏爱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/

原文发布于微信公众号 - 高性能服务器开发(easyserverdev)

原文发表时间:2018-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

为什么要有Spring?

Spring核心技术原理(1)为什么要有Spring? 一、知史可以明鉴 我们学习技术的时代赶上了最好的时代,跳过了很多前人经常踩的坑,前人在踩坑的过程中总结了...

2197
来自专栏大数据和云计算技术

HBase多模的机遇与挑战

首先提前祝大家中秋快乐,今天我们分享的文章来自云栖大会嘉宾:阿里云专家 封神的分享

1323
来自专栏SDNLAB

解耦重构 Internet BGP SDN

高清视频直播和云计算的蓬勃发展,带来互联网流量持续高速增长,主流云公司的Internet出口带宽都已经达到Tbps级别。 鉴于网络的拥堵大部分发生在出口互联,E...

3844
来自专栏我和PYTHON有个约会

大牧夜话——爬虫篇-预告片PYTHON爬虫-江湖夜话

应大家的要求,最近打算整理一下PYTHON爬虫的东东,希望能对入门的童鞋们有所助益!本人技术一般水平有限,如有不妥请联系或者私信本人,互相进步。 内容会同步在...

922
来自专栏微信公众号:Java团长

Java就业指导

想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面...

1922
来自专栏Java架构

跳槽必看!一位程序猿面试蚂蚁金服后端的经验总结!前言自我介绍最近的项目经历总结

2825
来自专栏月牙寂

白话面向智能体编程(Agent Oriented Programmig, AOP)之四

前段时间一直周旋于各种有趣且辛苦, 或者无趣且更辛苦的事情当中, 虽然其间也切换到其他好些不同的技术领域, 但一直没有放弃在AOP方面的关注思考. 前面之所以...

3849
来自专栏何俊林

kotlin写的音视频app(已开源)

目前项目持续更新重构中(目前项目已经转型到kotlin了) Life is a Multimedia information app based on Mate...

2589
来自专栏Albert陈凯

2018-11-06 成为一个专业的程序员前言

https://github.com/stanzhai/be-a-professional-programmer

5452
来自专栏架构师之路

100亿数据1万属性数据架构设计

一分钟系列之《啥,又要为表增加一列属性?》分享了两种数据库属性扩展思路,被喷得厉害。第二天补充了一篇《这才是真正的表扩展方案》,分享了互联网大数据高并发情况下,...

4946

扫码关注云+社区

领取腾讯云代金券