最近两天看了看libevnet 源代码~,主要学习资料是源代码libevent-2.0.21-stable、
Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点:
(1)事件驱动(event-driven),高性能;
(2)轻量级,专注于网络;
(3)源代码相当精炼、易读;
(4)跨平台,支持 Windows、Linux、*BSD和 Mac Os;
(5)支持多种 I/O多路复用技术, epoll、poll、dev/poll、select 和kqueue 等;
(6)支持 I/O,定时器和信号等事件;
(7)注册事件优先级;
Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、等等。
libevent 是Reactor 反应器模式。
源代码中总要的结构:
1、struct event_base. 主要控制结构,相当于Reacot模式中的reactor。 主循环,底层调用 epoll_wait()等 多路复用机制。
2、struct event . 事件处理程序的抽象(结构体中包含回调函数,由event_base 触发), 由event_base管理 。 event_base通过链表、二叉堆来管理event,用于优先级、定时器管理。
参考了以及下面几个博客,这几个博客已经总结的很好了:
http://blog.csdn.net/sparkliang/article/category/660506
http://www.cnblogs.com/hustcat/archive/2010/08/31/1814022.html
来源:https://www.cnblogs.com/baozimeiyouxian/p/4050078.html