libevent
libevent是一個非同步事件處理軟件函式庫。libevent是一個提供非同步事件通知的軟件庫。libevent提供了一組應用程式編程介面(API),libevent API提供的機制允許開發者為事件註冊回呼函數,例如檔案描述子上的發生了特定事件或者等待特定事件逾時,接收到訊號的事件,常規的定時器逾時事件。當事件發生時,libevent實例會執行回呼函數。libevent 在設計上是用來替代很多事件驅動網絡伺服器自行實現的事件迴圈框架的。 也就是說,libevent可以用來取代網絡伺服器所使用的事件迴圈檢查框架。
原作者 | Azat Khuzhin, Mark Ellzey, Nick Mathewson, Niels Provos |
---|---|
首次釋出 | 2002年4月9日[1] |
目前版本 | 2.1.12(2020年7月5日 | )
原始碼庫 | |
平台 | 跨平臺 |
語言 | C語言、C++ |
類型 | 網絡函式庫 |
特許條款 | BSD特許條款[2] |
網站 | libevent |
libevent 現在支援 /dev/poll
,kqueue(2),POSIX select(2),Windows IOCP,poll(2),epoll(7),和 Solaris埠。libevent 對即時訊號有試驗性支援。libevent 暴露出的 API 在全平台都是一致的,因此 libevent 支援可移植的應用程式開發,並提供「作業系統上最可延伸的事件通知機制」[3]
開發者通過 libevent 註冊訊號回呼,可以編寫「安全」的訊號處理程式,因為用戶提供的訊號處理程式都不會在訊號 處理上下文中執行。
由於可以省去對網絡的處理,且擁有不錯的效能,有些軟件使用libevent作為網絡底層的函式庫,如:memcached、Tor。
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 的著名軟件
利用過 libevent 的一些著名的應用程式包括:
- Google Chrome: Google's Web 瀏覽器 (Mac 和 Linux 版本)
- Memcached: 一個高效能的分散式主記憶體對象快取系統[6]
- Transmission: 一個開源的 BitTorrent (協定)客戶端。[7]
- ntpd: 網絡時間協定 daemon [8]
- Tor: 一個匿名互聯網通訊系統[9]。
- tmux: 一個終端多路復用器 [10]
替代品
參照
- ^ libevent Releases. Github. [30 August 2019]. (原始內容存檔於2020-06-18).
- ^ LICENSE. Github. [30 August 2019]. (原始內容存檔於2021-03-29).
- ^ http://libevent.org/ (頁面存檔備份,存於互聯網檔案館) Libevent web page
- ^ Mathewson, Nick. Nick Mathewson. Nick Mathewson's Homepage. [10 January 2015]. (原始內容存檔於2020-10-27).
- ^ http://www.monkey.org/~provos/libevent/LICENSE (頁面存檔備份,存於互聯網檔案館) License of libevent
- ^ memcached.h at Master. [2020-02-24]. (原始內容存檔於2020-02-24).
- ^ libtransmission/trevent.c at Master at transmission/transmission - GitHub. [2020-02-24]. (原始內容存檔於2020-02-24).
- ^ lib/isc/win32/app.c - ntp-project/ntp - GitHub.
- ^ src/lib/evloop/compat_libevent.c - torproject/tor - GitHub. [2020-02-24]. (原始內容存檔於2020-02-24).
- ^ tmux/README at Master - tmux/tmux - GitHub. [2020-02-24]. (原始內容存檔於2019-09-29).
外部連結
- (英文) libevent
.org,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之間比較的基準測試程式