Libevent介紹
Libevent是一種適合于多平臺的(Windows蹄梢,Linux金度,BSD)多種平臺的輕量級開源高性能事件觸發(fā)網(wǎng)絡(luò)庫,在libevent內(nèi)部使用select、poll、epoll等系統(tǒng)調(diào)用管理事件機制传藏;
Libevent的下載安裝
1、下載的網(wǎng)站在http://libevent.org
2彤守、下載之后使用./configure --prefix=/home/用戶名/lib
3毯侦、執(zhí)行make
4、執(zhí)行make install
然后再/usr/lib/libevent*.so
或者在/usr/lib64/libevent*.so
或者在/usr/local/lib/libevent*.so
可以找到這個庫文件具垫;
libevent的構(gòu)成
libevent_core
:表示所有核心的事件和緩沖功能侈离,通常包含event_base
以及evbuffer
、bufferevent
筝蚕、以及各種工具函數(shù)
libevent_pthreads
:表示基于pthread
可移植線程庫的線程和鎖卦碾,并且獨立于libevent_core
,這樣程序使用libevent
時起宽,就不需要連接到pthread洲胖,但是使用多線程方式例外;
libevent_extra
:用于定義的是特殊的協(xié)議坯沪,例如HTTP绿映,DNS,RPC腐晾;
libevent
:這個庫已經(jīng)不經(jīng)常使用叉弦;
Libevent的功能
1、事件通知:當文件描述符可讀可寫時執(zhí)行回調(diào)函數(shù)赴魁;
2卸奉、IO緩存:緩存事件提供了輸入輸出緩存,能夠自動的讀入和寫入颖御,用戶不必執(zhí)行操作IO榄棵;
3、定時器:定時器機制潘拱,在一定時間間隔之后調(diào)用回調(diào)函數(shù)疹鳄;
4、信號:觸發(fā)信號芦岂,執(zhí)行回調(diào)函數(shù)瘪弓;
5、異步的DNS解析:異步解析DNS服務(wù)器的DNS解析函數(shù)集禽最;
6腺怯、事件驅(qū)動的HTTP服務(wù)器:HTTP服務(wù)器袱饭;
7、RPC客戶端服務(wù)器框架:RPC服務(wù)器和客戶端框架呛占,自動的封裝和解封數(shù)據(jù)結(jié)構(gòu)虑乖;
Rectory反應(yīng)器模式
應(yīng)用程序提供相應(yīng)的接口并且注冊到reactor,相應(yīng)的事件發(fā)生之后晾虑,rector自動調(diào)用相應(yīng)的注冊的接口函數(shù)(類似于回調(diào)函數(shù))通知疹味;
簡單的定時器
event_init()
:
evtimer_set()
:
event_add()
:
event_dispatch()
:
TCP服務(wù)器
event_base_new()
:
event_set()
:
event_base_set()
:
event_add()
:
event_base_dispatch()
: