libevent

来自维基百科,自由的百科全书

libevent是一個異步事件處理軟體函式庫。libevent是一個提供異步事件通知的軟件庫。libevent提供了一組應用程序編程接口(API),libevent API提供的機制允許開發者為事件註冊回調函式,例如文件描述符上的發生了特定事件或者等待特定事件超時,接收到信號的事件,常規的定時器超時事件。當事件發生時,libevent實例會執行回調函數。libevent 在設計上是用來替代很多事件驅動網絡服務器自行實現的事件循環框架的。 也就是說,libevent可以用來取代網路伺服器所使用的事件循環檢查框架。

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

  • Google Chrome: Google's Web 瀏覽器 (Mac 和 Linux 版本)
  • Memcached: 一個高性能的分布式內存對象緩存系統[6]
  • Transmission: 一個開源的 BitTorrent (協議)客戶端。[7]
  • ntpd: 網絡時間協議 daemon [8]
  • Tor: 一個匿名互聯網通信系統[9]
  • tmux: 一個終端多路復用器 [10]

替代品

引用

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.