libevent是一個非同步事件處理軟件函式庫。libevent是一個提供非同步事件通知的軟件庫。libevent提供了一組應用程式編程介面(API),libevent API提供的機制允許開發者為事件註冊回呼函數,例如檔案描述子上的發生了特定事件或者等待特定事件逾時,接收到訊號的事件,常規的定時器逾時事件。當事件發生時,libevent實例會執行回呼函數。libevent 在設計上是用來替代很多事件驅動網絡伺服器自行實現的事件迴圈框架的。 也就是說,libevent可以用來取代網絡伺服器所使用的事件迴圈檢查框架。

libevent
原作者Azat Khuzhin, Mark Ellzey, Nick Mathewson, Niels Provos
首次釋出2002年4月9日,​22年前​(2002-04-09[1]
目前版本2.1.12(2020年7月5日,​4年前​(2020-07-05
原始碼庫 編輯維基數據連結
平台跨平臺
語言C語言C++
類型網絡函式庫
特許條款BSD特許條款[2]
網站libevent.org

libevent 現在支援 /dev/pollkqueue(2),POSIX select(2),Windows IOCPpoll(2)epoll(7),和 Solaris埠。libevent 對即時訊號有試驗性支援。libevent 暴露出的 API 在全平台都是一致的,因此 libevent 支援可移植的應用程式開發,並提供「作業系統上最可延伸的事件通知機制」[3]

開發者通過 libevent 註冊訊號回呼,可以編寫「安全」的訊號處理程式,因為用戶提供的訊號處理程式都不會在訊號 處理上下文中執行。

由於可以省去對網絡的處理,且擁有不錯的效能,有些軟件使用libevent作為網絡底層的函式庫,如:memcachedTor

libevent由Niels Provos建立,主要由Nick Mathewson維護[4],以BSD特許條款釋出[5]

支援級別

目前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. ^ LICENSE. Github. [30 August 2019]. (原始內容存檔於2021-03-29). 
  3. ^ http://libevent.org/頁面存檔備份,存於互聯網檔案館) Libevent web page
  4. ^ Mathewson, Nick. Nick Mathewson. Nick Mathewson's Homepage. [10 January 2015]. (原始內容存檔於2020-10-27). 
  5. ^ http://www.monkey.org/~provos/libevent/LICENSE頁面存檔備份,存於互聯網檔案館) License of libevent
  6. ^ memcached.h at Master. [2020-02-24]. (原始內容存檔於2020-02-24). 
  7. ^ libtransmission/trevent.c at Master at transmission/transmission - GitHub. [2020-02-24]. (原始內容存檔於2020-02-24). 
  8. ^ lib/isc/win32/app.c - ntp-project/ntp - GitHub. 
  9. ^ src/lib/evloop/compat_libevent.c - torproject/tor - GitHub. [2020-02-24]. (原始內容存檔於2020-02-24). 
  10. ^ tmux/README at Master - tmux/tmux - GitHub. [2020-02-24]. (原始內容存檔於2019-09-29). 

外部連結