最近自学libevent事件驱动库,参考的资料为libevent2.2版本以及张亮提供的《Libevent源码深度剖析》,参考资料: http://blog.csdn.net/sparkliang/article/details/4957667, libevent好处之类的就不赘述了,libevent和libiop,redis等一样都是采用事件回调机制,这种模式被称作Reactor模式。正常事件处理流程是应用程序调用某个接口触发某个功能,而Reactor模式需要我们将这些接口和宿主指针(谁调用这些接口)注册在Reactor,在合适的时机Reactor使用宿主指针调用注册好的回调函数。
一: Reactor基本知识
Reactor 模式是编写高性能网络服务器的必备技术之一
,它具有如下的优点:1)响应快
,不必为单个同步时间所阻塞,虽然 Reactor 本身依然是同步的;2)编程相对简单
,可以最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销;3)可扩展性
,可以方便的通过增加 Reactor 实例个数来充分利用 CPU 资源;4)可复用性
, reactor 框架本身与具体事件处理逻辑无关,具有很高的复用性;
Reactor模式框架