libevent是一個异步事件處理軟體函式庫。libevent是一个提供异步事件通知的软件库。libevent提供了一組應用程序編程接口(API),libevent API提供的机制允许开发者为事件注册回调函式,例如文件描述符上的发生了特定事件或者等待特定事件超时,接收到信号的事件,常规的定时器超时事件。当事件發生時,libevent实例会执行回调函数。libevent 在设计上是用来替代很多事件驱动网络服务器自行实现的事件循环框架的。 也就是說,libevent可以用來取代網路伺服器所使用的事件循环檢查框架。

libevent
原作者Azat Khuzhin, Mark Ellzey, Nick Mathewson, Niels Provos
首次发布2002年4月9日,​21年前​(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 的一些著名的应用程序包括:

替代品 编辑

引用 编辑

  1. ^ libevent Releases. Github. [30 August 2019]. (原始内容存档于2020-06-18). 
  2. ^ Release 2.1.12. 2020年7月5日 [2020年7月6日]. 
  3. ^ LICENSE. Github. [30 August 2019]. (原始内容存档于2021-03-29). 
  4. ^ http://libevent.org/页面存档备份,存于互联网档案馆) Libevent web page
  5. ^ Mathewson, Nick. Nick Mathewson. Nick Mathewson's Homepage. [10 January 2015]. (原始内容存档于2020-10-27). 
  6. ^ http://www.monkey.org/~provos/libevent/LICENSE页面存档备份,存于互联网档案馆) License of libevent
  7. ^ memcached.h at Master. [2020-02-24]. (原始内容存档于2020-02-24). 
  8. ^ libtransmission/trevent.c at Master at transmission/transmission - GitHub. [2020-02-24]. (原始内容存档于2020-02-24). 
  9. ^ lib/isc/win32/app.c - ntp-project/ntp - GitHub. 
  10. ^ src/lib/evloop/compat_libevent.c - torproject/tor - GitHub. [2020-02-24]. (原始内容存档于2020-02-24). 
  11. ^ tmux/README at Master - tmux/tmux - GitHub. [2020-02-24]. (原始内容存档于2019-09-29). 

外部連結 编辑