libev是Libevent之后的一个事件驱动的编程框架,其接口和libevent基本类似。据官方介绍,其性能比libevent还要高,bug比libevent还少。libev由Marc Lehmann和Emanuele Giaquinta创建,以GPLv2协议发布。它参考并模仿了libevent和Perl模块Event的设计,但在实现上做了改进和优化。node.js曾经嵌入了libev,但后来更换为了libuv。

尽管libev在多方面进行了优化,但它不支持Windows的IOCP,这在某些使用场景下可能是一个限制。

简介

libev在设计上旨在改进Libevent中的一些架构决策。它避免了全局变量的使用,使得在多线程环境中更安全;采用了更小的观察器结构,例如一个I/O观察器在x86_64机器上仅使用56字节,相比之下libevent使用136字节;libev没有像libevent那样包含http库等额外组件,它的功能更为精简;并且它允许更多事件类型,例如基于wall clock或者单调时间的定时器、线程间中断等。libev的设计遵循unix工具箱的哲学,力求在其专注的领域做到最好。

相关软件

以下软件使用了libev作为其事件库。

参考资料