libevent

libevent是一个异步事件处理软件函数库。libevent是一个提供异步事件通知的软件库。libevent提供了一组应用进程编程接口(API),libevent API提供的机制允许开发者为事件注册回调函数,例如文档描述符上的发生了特定事件或者等待特定事件超时,接收到信号的事件,常规的定时器超时事件。当事件发生时,libevent实例会执行回调函数。libevent 在设计上是用来替代很多事件驱动网络服务器自行实现的事件循环框架的。 也就是说,libevent可以用来取代网络服务器所使用的事件循环检查框架。

libevent
原作者Azat Khuzhin, Mark Ellzey, Nick Mathewson, Niels Provos
首次发布2002年4月9日2002-04-09[1]
当前版本
  • 2.1.12 (2020年7月5日)[2]
源代码库
平台跨平台
语言C语言C++
类型网络函数库
许可协议BSD许可证[3]
网站libevent.org

libevent 现在支持 /dev/pollkqueue(2),POSIX select(2),Windows IOCPpoll(2)epoll(7),和 Solaris端口。libevent 对实时信号有试验性支持。libevent 暴露出的 API 在全平台都是一致的,因此 libevent 支持可移植的应用进程开发,并提供“操作系统上最可扩展的事件通知机制”[4]

开发者通过 libevent 注册信号回调,可以编写“安全”的信号处理进程,因为用户提供的信号处理进程都不会在信号 处理上下文中运行。

由于可以省去对网络的处理,且拥有不错的性能,有些软件使用libevent作为网络底层的函数库,如:memcachedTor

libevent由Niels Provos创建,主要由Nick Mathewson维护[5],以BSD许可证发布[6]

支持级别

目前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: 一个高性能的分布式内存对象缓存系统[7]
  • Transmission: 一个开源的 BitTorrent (协议)客户端。[8]
  • ntpd: 网络时间协议 daemon [9]
  • Tor: 一个匿名互联网通信系统[10]
  • tmux: 一个终端多路复用器 [11]

替代品

引用

  1. . Github. [30 August 2019]. (原始内容存档于2020-06-18).
  2. . 2020年7月5日 [2020年7月6日].
  3. . Github. [30 August 2019]. (原始内容存档于2021-03-29).
  4. http://libevent.org/ 页面存档备份,存于 Libevent web page
  5. Mathewson, Nick. . Nick Mathewson's Homepage. [10 January 2015]. (原始内容存档于2020-10-27).
  6. http://www.monkey.org/~provos/libevent/LICENSE 页面存档备份,存于 License of libevent
  7. . [2020-02-24]. (原始内容存档于2020-02-24).
  8. . [2020-02-24]. (原始内容存档于2020-02-24).
  9. .
  10. . [2020-02-24]. (原始内容存档于2020-02-24).
  11. . [2020-02-24]. (原始内容存档于2019-09-29).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.