Libevent
外觀
libevent是一个非同步事件處理軟體函式庫。libevent 是一个提供非同步事件通知的軟體庫。libevent 提供一組應用程式編程介面(API), libevent API 提供的機制允准開發者為事件佮註冊回呼函式,比如講檔案來講出世子上的發生了特定事件抑是等待特定的事件超過時間,接收著訊號的事件,定規的定時間超時間事件。當事件發生的時陣,libevent 實例會執行回呼函式。libevent 佇咧設計上是用來替代真濟事件來驅動網路侍服器家己實現的事件回轉箍框的。 也就是講,libevent 會使用來取代網路侍服器所使用的事件迴圈檢查框殼。
libevent 這馬支援 ` / dev / poll `,kqueue ( 二 ),POSIX select ( 二 ),Windows IOCP,poll ( 二 ),epoll ( 七 ),和 Solaris 埠頭。libevent 著即時訊號有試驗性支援。libevent 暴露出的 API 佇全平台攏是一致的,所以 libevent 支援會當移植的應用程式開發,並提供「作業系統上上會當延伸的事件通知機制」
開發者通過 libevent 註冊的訊號回呼,會當編寫啦乎「安全」的訊號處理程式,因為使用者提供的訊號處理程式攏袂佇訊號處理上下文中執行。
因為會當省去對網路的處理,而且有袂䆀的效能,有一寡軟體使用 libevent 做網路底層的函式庫,如:memcached、Tor。
libevent 由 Niels Provos 建立,主要是由 Nick Mathewson 維護,以 BSD 授權條款釋出。
支援級別
目前 libevent 支援以下的方式判斷 IO 事件:
- poll ( 二 )
- select ( 二 )
- 差不多所有的 Unix 平台攏有提供的函式。
- / dev / pool
- 以 Solaris 平台為主。
- kqueue ( 二 )
- 以 BSD 平台為主。
- epoll ( 二 )
- 以 Linux 平台為主。
主要版本
- libevent 空七一(二空空空年十一月四號): 頭一个公開版本。
- libevent 一垺零(二空空四年十二月初五), 支援多執行緒。
- libevent 一孵一(二空空五年五月十四號)。
- libevent 一孵二(二空空六年十月十五): 支援 DNS 使用者捀查詢函式、支援 HTTP 使用者捀捀服器捀函式。
- libevent 一孵三(二空空七年二月十五): 支援 DNS 侍服器捀函式。
- libevent 一孵四(二空空八年四月七號): 新的 RPC 子系統。共內部資料結構由 pull 改做 push(Heap)以增加效率。
- libevent 二孵空(二空空九年十一月十九)。
使用 libevent 的出名軟體
利用過 libevent 的一寡出名的應用程式包括 :
- Google Chrome : Google's Web 瀏覽器 ( Mac 和 Linux 版本 )
- Memcached : 一个高效能的分散式記持體物件緊取系統
- Transmission : 一个開源的 BitTorrent ( 協定 ) 客戶捀。
- ntpd : 網路時間協定 daemon
- Tor : 一个匿名網際網路通信系統。
- tmux : 一个尾仔彼个濟路復用器
外部連結
- (英文)libevent . org,libevent 的官方網站。
- (英文)The C 十 K problem,討論連線數破萬時會拄著的關係。
- (英文)Libevent 二孵空 book , libevent 二嬸零參考冊
- (英文)liboop-another asynchronous event notification library,另外一个非同步事件庫
- (英文)A benchmark by the libev author comparing libevent with libev , a similar library,libevent 佮一个類似的庫 libev 之間較的基準測試程式
替代品
- libev
- libuv
- inotify