Libevent
Template:Lowercase Template:NoteTA Template:Infobox Software libevent是一個異步事件處理軟件函式庫。libevent是一個提供異步事件通知的軟件庫。libevent提供了一組應用程序編程接口(API),libevent API提供的機制允許開發者為事件註冊回調函式,例如文件描述符上的發生了特定事件或者等待特定事件超時,接收到信號的事件,常規的定時器超時事件。當事件發生時,libevent實例會執行回調函數。libevent 在設計上是用來替代很多事件驅動網絡伺服器自行實現的事件循環框架的。 也就是說,libevent可以用來取代網絡伺服器所使用的事件循環檢查框架。
libevent 現在支持 /dev/poll,kqueue(2),POSIX select(2),Windows IOCP,poll(2),epoll(7),和 Solaris端口。libevent 對實時信號有試驗性支持。libevent 暴露出的 API 在全平台都是一致的,因此 libevent 支持可移植的應用程式開發,並提供「作業系統上最可擴展的事件通知機制」[1]
開發者通過 libevent 註冊信號回調,可以編寫「安全」的信號處理程序,因為用戶提供的信號處理程序都不會在信號 處理上下文中運行。
由於可以省去對網絡的處理,且擁有不錯的效能,有些軟件使用libevent作為網絡底層的函式庫,如:memcached、Tor。
libevent由Niels Provos創建,主要由尼克·馬修森維護[2],以BSD許可證發佈[3]。
支持級別[編輯]
目前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: 一個高性能的分佈式內存對象緩存系統[4]
- Transmission: 一個開源的 BitTorrent (協議)客戶端。[5]
- ntpd: 網絡時間協議 daemon [6]
- Tor: 一個匿名互聯網通信系統[7]。
- tmux: 一個終端多路復用器 [8]
替代品[編輯]
引用[編輯]
- ↑ http://libevent.org/ (頁面存檔備份,存於互聯網檔案館) Libevent web page
- ↑ Template:Cite web
- ↑ http://www.monkey.org/~provos/libevent/LICENSE (頁面存檔備份,存於互聯網檔案館) License of libevent
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
外部連結[編輯]
- (英文) 腳本錯誤:沒有「URL」這個模塊。,libevent的官方網站。
- (英文) The C10K problem,討論連線數破萬時會遇到的瓶頸。
- (英文) Libevent 2.0 book (頁面存檔備份,存於互聯網檔案館), libevent 2.0參考書籍
- (英文) liboop - another asynchronous event notification library (頁面存檔備份,存於互聯網檔案館),另一個異步事件庫
- (英文) A benchmark by the libev author comparing libevent with libev, a similar library (頁面存檔備份,存於互聯網檔案館),libevent與一個類似的庫libev之間比較的基準測試程序