Libevent
跳转到导航
跳转到搜索
Template:Lowercase Template:NoteTA Template:Infobox Software libevent是一个异步事件处理软件函式库。libevent是一个提供异步事件通知的软件库。libevent提供了一组应用程序编程接口(API),libevent API提供的机制允许开发者为事件注册回调函式,例如文件描述符上的发生了特定事件或者等待特定事件超时,接收到信号的事件,常规的定时器超时事件。当事件发生时,libevent实例会执行回调函数。libevent 在设计上是用来替代很多事件驱动网络服务器自行实现的事件循环框架的。 也就是说,libevent可以用来取代网络服务器所使用的事件循环检查框架。
libevent 现在支持 /dev/poll,kqueue(2),POSIX select(2),Windows IOCP,poll(2),epoll(7),和 Solaris端口。libevent 对实时信号有试验性支持。libevent 暴露出的 API 在全平台都是一致的,因此 libevent 支持可移植的应用程序开发,并提供“操作系统上最可扩展的事件通知机制”[1]
开发者通过 libevent 注册信号回调,可以编写“安全”的信号处理程序,因为用户提供的信号处理程序都不会在信号 处理上下文中运行。
由于可以省去对网络的处理,且拥有不错的效能,有些软件使用libevent作为网络底层的函式库,如:memcached、Tor。
libevent由Niels Provos创建,主要由尼克·马修森维护[2],以BSD许可证发布[3]。
支持级别[编辑]
目前libevent支持以下的方式判断IO事件:
- poll(2)
- select(2)
- 几乎所有的Unix平台都有提供的函式。
- /dev/pool
- 以Solaris平台为主。
- kqueue(2)
- 以BSD平台为主。
- epoll(2)
- 以Linux平台为主。
主要版本[编辑]
- libevent 0.1(2000年11月4日):第一个公开版本。
- libevent 1.0(2004年12月5日),支持多线程。
- libevent 1.1(2005年5月14日)。
- libevent 1.2(2006年10月15日):支援DNS用户端查询函式、支援HTTP用户端及服务器端函式。
- libevent 1.3(2007年2月15日):支援DNS服务器端函式。
- libevent 1.4(2008年4月7日):新的RPC子系统。将内部资料结构由pull改为push(Heap)以增加效率。
- libevent 2.0(2009年11月19日)。
使用 libevent 的著名软件[编辑]
利用过 libevent 的一些著名的应用程序包括:
- Google Chrome: Google's Web 浏览器 (Mac 和 Linux 版本)
- Memcached: 一个高性能的分布式内存对象缓存系统[4]
- Transmission: 一个开源的 BitTorrent (协议)客户端。[5]
- ntpd: 网络时间协议 daemon [6]
- Tor: 一个匿名互联网通信系统[7]。
- tmux: 一个终端多路复用器 [8]
替代品[编辑]
引用[编辑]
- ↑ http://libevent.org/ (页面存档备份,存于互联网档案馆) Libevent web page
- ↑ Template:Cite web
- ↑ http://www.monkey.org/~provos/libevent/LICENSE (页面存档备份,存于互联网档案馆) License of libevent
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
外部链接[编辑]
- (英文) 脚本错误:没有“URL”这个模块。,libevent的官方网站。
- (英文) The C10K problem,讨论连线数破万时会遇到的瓶颈。
- (英文) Libevent 2.0 book (页面存档备份,存于互联网档案馆), libevent 2.0参考书籍
- (英文) liboop - another asynchronous event notification library (页面存档备份,存于互联网档案馆),另一个异步事件库
- (英文) A benchmark by the libev author comparing libevent with libev, a similar library (页面存档备份,存于互联网档案馆),libevent与一个类似的库libev之间比较的基准测试程序