目录
该libevent的 API提供一种机制,在特定事件上的文件描述符或达到超时后发生时执行的回调函数。此外,由于信号或常规超时,libevent还支持回调。
libevent旨在替换事件驱动的网络服务器中的事件循环。应用程序只需要调用 event_dispatch(),然后动态添加或删除事件,而无需更改事件循环。
目前,libevent支持 / dev / poll, kqueue(2), 事件端口, POSIX select(2), Windows select(), poll(2)和epoll(4)。内部事件机制完全独立于公开的事件API,libevent的简单更新可以提供新功能,而无需重新设计应用程序。结果,Libevent允许便携式应用程序开发,并提供操作系统上可用的最具扩展性的事件通知机制。Libevent也可以用于多线程应用程序,方法是隔离每个event_base,以便只有一个线程可以访问它,或者通过锁定对单个共享event_base的访问来实现。 Libevent应该在Linux,* BSD,Mac OS X,Solaris,Windows等平台上编译。
Libevent还提供了用于缓冲网络IO的复杂框架,并支持套接字,过滤器,速率限制,SSL,零拷贝文件传输和IOCP。Libevent包括对几种有用协议的支持,包括DNS,HTTP和最小的RPC框架。
有关网络服务器事件通知机制的更多信息,请参见Dan Kegel的“ C10K问题 ”网页。
libevent 的邮件列表现在可用。Libevent由Nick Mathewson,Azat Khuzhin和Niels Provos维护。
文献资料
图书:用Libevent编程。
参考: 1.4.x-stable 2.0.x-stable 2.1.x-stable master
新功能: 2.0.x-stable 2.1.x-alpha。
下载–稳定版本
除非您希望跟踪最新的开发版本并报告其中的错误,否则您可能需要这些来进行软件开发。
下载候选版本
这是一个候选版本。如果您发现任何错误,请告诉我们!
下载– Alpha版本
这是字母代码。如果您发现任何错误,请告诉我们!
旧版本
Libevent已根据3条款BSD许可发布。有关公共git访问的信息。
- libevent-2.1.11-stable.tar.gz [ GPG 签名 ] ChangeLog
发布于2019-08-01(ABI更改)- libevent-2.1.10-stable.tar.gz [ GPG 签名 ] ChangeLog
发布于2019-05-26 - 的libevent-2.1.8-stable.tar.gz [ GPG西格 ] 修改记录
发行日期2017年1月22日- 跟随的变更日志
- 的libevent-2.0.22-stable.tar.gz [ GPG西格 ] 修改记录
发行日期2014年1月5日- 跟随的变更日志
- libevent-2.0.21-stable.tar.gz [ GPG 签名 ] ChangeLog
发布2012-11-18- 几个SSL正确性和性能修复。
- 为mingw64构建修补程序
- 避免一些资源泄漏
- 和更多...
- libevent-2.0.20-stable.tar.gz [ GPG 签名 ] ChangeLog
发布2012-08-23- 修复Windows崩溃的问题。
- 使event_pending()成为线程安全的。
- 另一个SSL回调行为修复
- 避免出现evdns段错误(Greg Hazel)
- 和更多...
- libevent-1.4.15-stable.tar.gz ChangeLog
发布于2015-01-05- 跟随的变更日志
- libevent-1.4.14b-stable.tar.gz [ GPG 签名 ] ChangeLog
发布2010-06-07- 反向移植evbuffer_readln()
- 修复了读取格式错误的resolve.conf(Yasuoka Masahiko)时导致的崩溃
- 使evutil_make_socket_nonblocking()保留其他任何标志(Jardel Weyrich)
- 在evutil_make_socket_nonblocking()上调整了fcntl()检索比较(Jardel Weyrich)
- 重新添加event_siglcb; 一些旧代码_was_仍在使用它。:(
- 使Libevent 1.4在启用Unicode的win32上构建。(布罗迪·蒂斯菲尔德)
- 分发1.4的nmake makefile
- 根据需要在Solaris和其他地方(6cbea13)定义_REENTRANT
- http,内存管理和清理的其他错误修正。
- libevent-2.1.7-rc.tar.gz ChangeLog
发布于2016-11-05- 遵循的变更日志。
- libevent-2.1.9- beta.tar.gz [ GPG签名] ChangeLog
发布于2019-02-10 - libevent-2.0.23-beta.tar.gz [ GPG 签名] ChangeLog
发布于2019-01-20 - libevent-2.1.6-beta.tar.gz ChangeLog
发布于2016-08-27- 遵循的变更日志。
- libevent-2.1.5-beta.tar.gz [ GPG签名 ] ChangeLog
发布于2015-01-05- 遵循的变更日志。
- libevent-2.1.4-alpha.tar.gz [ GPG 签名 ] ChangeLog
发布2014-03-21- libevent核心,bufferevents和evhttp中有几个新的实用程序API。
- 检测与EPOLLRDHUP提前关闭。
- (可选)对带有cmake的buildint的支持。
- 错误修正不胜枚举。
- 以及更多...
- 的libevent-2.1.3-alpha.tar.gz [ GPG西格 ] 修改记录
发行日期2013年5月1日- 新的完成API,修复了bufferevent死锁问题。
- 新的evdns和evhttp选项。
- 几个新的单元测试。
- 错误修正和可移植性修正以及构建修正不胜枚举。
- 以及更多...
- libevent-2.1.2-alpha.tar.gz [ GPG 签名 ] ChangeLog
发布2012-11-18- 核心,evbuffer和bufferevent API中的各种新功能
- 现在,甚至更多的后端都可以使用便携式单调计时器。
- 更新的自动工具构建基础结构可加快构建速度。
- 更可靠的单元测试
- 内部事件回调接口现已重构,以提高灵活性和性能
- 使用kqueue进行更快的通知,在Linux上实现更快/更精确的计时器
- 在整个代码库中进行了许多小的性能改进和数据结构调整
- 针对2.1.1-alpha的各种错误修正
- 以及更多...
- libevent-2.1.1-alpha.tar.gz [ GPG 签名 ] ChangeLog
发布2012-04-03- 2.1.x系列中的第一个alpha版本。
- 用于控制事件循环和避免优先级倒置的有用功能
- 新的调试功能。
- 新的evbuffer功能,包括改进的sendfile / mmap包装器,将一个evbuffer添加到另一evbuffer的功能以及避免不必要副本的更多方法。
- 在整个代码库中,进行了许多小的性能改进和数据结构调整。
- 以及更多...
- libevent-2.1.10-stable.tar.gz [ GPG 签名 ] ChangeLog
基准测试
在Libevent中使用不同的事件通知机制进行性能比较。我们对大量连接感到兴趣,其中大多数连接是冷的,只有少数是活动的
该基准测试了为一个活动连接提供服务所需的时间,并揭示了诸如select或poll之类的传统接口的可伸缩性问题。
该基准测试了为链接写入新连接的一百个活动连接提供服务的时间,直到发生数千次写入和读取为止。它多次执行事件循环。
使用libevent的程序
以下应用程序证明了libevent API的有用性:
- Chromium – Google的开源Web浏览器(在Mac和Linux上使用Libevent)
- Memcached –高性能的分布式内存对象缓存系统
- 传输 –快速,轻松,免费的BitTorrent客户端
- NTP –使您的时钟正确的网络时间协议(在SNTP中使用Libevent)
- tmux –干净,现代的,BSD许可的终端多路复用器,类似于GNU屏幕
- Tor –匿名Internet通信系统。
- libevhtp –快速,灵活地替代libevent的http客户端/服务器API
- Prosody –用Lua编写的Jabber / XMPP服务器
- PgBouncer – PostgreSQL的轻量级连接池
- redsocks –一个简单的透明TCP-> Socks5 / HTTPS代理守护程序。
- 呕吐 –配置错误的网络电话上的语音
- 抓取 –小型高效的HTTP 爬网程序
- Libio –输入/输出抽象库
- Honeyd –虚拟蜜网守护程序–可用于对抗Internet蠕虫。
- Fragroute – IDS测试工具
- 尼龙 –嵌套代理服务器
- Disconcert –松散耦合工作站的分布式计算框架。
- ckle流 –轻量级的用户空间带宽整形器。
- watchcatd –软件看门狗,旨在采取不像通常的解决方案那样激烈的措施来重置机器。
- ScanSSH –快速的SSH服务器和开放式代理扫描程序。
- Nttlscan – Honeyd的网络拓扑扫描程序。
- NetChat – netcat和ppp聊天的组合。
- Io –一种小型编程语言;使用libevent进行网络通信。
- Systrace –系统调用沙箱。
- SpyBye –检测网页上的恶意软件。
- GreenSQL – SQL数据库防火墙。
- dnsscan –用于识别开放式递归dns解析器的快速扫描器
- Kargo Event – libevent的PHP扩展。
- Scytale –数据库加密工具。