1. 程式人生 > >libevent庫簡介

libevent庫簡介

libevent是一個輕量級的基於事件驅動的高效能的開源網路庫,支援多個平臺(包括:Windows、Linux、Bsd等),對多個平臺的I/O複用技術進行了封裝。libevent使用select、poll和epoll等系統呼叫實現I/O複用, 但是針對於多個系統平臺上的不同的I/O複用實現方式,libevent進行了重新的封裝,並提供了統一的API介面。

libevent在實現上使用了事件驅動這種機制,其本質上是一種Reactor模式。

Reactor模式,是一種事件驅動機制。應用程式需要提供相應的介面並註冊到Reactor上,如果相應的事件發生,Reactor將主動呼叫應用程式註冊的介面,這些介面又稱為“回撥函式”。

lbevent的事件支援三種,分別是網路IO、定時器和訊號。定時器的資料結構使用最小堆(Min Heap),以提高效率。網路IO和訊號的資料結構採用了雙向連結串列(TAILQ)。

安裝
libevent原始碼壓縮包下載:http://libevent.org/
或者直接從github上clone原始碼:git clone https://github.com/nmathewson/Libevent.git

原始碼下載之後,然後進行編譯、安裝:

#cd Libevent
#./configure
#make install

libevent功能
Libevent提供了事件通知、IO快取、定時器、非同步解析DNS、事件驅動的HTTP Server和RPC框架:

1)事件通知:當檔案描述符可讀可寫時將執行回撥函式。
2)IO快取:快取事件提供了輸入輸出快取,能自動的讀入和寫入,使用者不必直接操作io。
3)定時器:libevent提供了定時器的機制,能夠在一定的時間間隔之後呼叫回撥函式。
4)訊號:觸發訊號,執行回撥。
5)非同步的DNS解析:libevent提供了非同步解析DNS伺服器的API。
6)事件驅動的HTTP Server:libevent提供了一個簡單的,可整合到應用程式中的HTTP伺服器。
7)RPC客戶端伺服器框架:libevent為建立RPC伺服器和客戶端建立了一個RPC框架,能自動的封裝和解封資料結構。

參考文件:
https://blog.csdn.net/majianfei1023/article/details/46485705


https://www.cnblogs.com/nearmeng/p/4043548.html