Libevent介紹
Libevent是一種適合于多平臺的(Windows,Linux,BSD)多種平臺的輕量級開源高性能事件觸發網絡庫,在libevent內部使用select、poll、epoll等系統調用管理事件機制;
Libevent的下載安裝
1、下載的網站在http://libevent.org
2、下載之后使用./configure --prefix=/home/用戶名/lib
3、執行make
4、執行make install
然后再/usr/lib/libevent*.so
或者在/usr/lib64/libevent*.so
或者在/usr/local/lib/libevent*.so
可以找到這個庫文件;
libevent的構成
libevent_core
:表示所有核心的事件和緩沖功能,通常包含event_base
以及evbuffer
、bufferevent
、以及各種工具函數
libevent_pthreads
:表示基于pthread
可移植線程庫的線程和鎖,并且獨立于libevent_core
,這樣程序使用libevent
時,就不需要連接到pthread,但是使用多線程方式例外;
libevent_extra
:用于定義的是特殊的協議,例如HTTP,DNS,RPC;
libevent
:這個庫已經不經常使用;
Libevent的功能
1、事件通知:當文件描述符可讀可寫時執行回調函數;
2、IO緩存:緩存事件提供了輸入輸出緩存,能夠自動的讀入和寫入,用戶不必執行操作IO;
3、定時器:定時器機制,在一定時間間隔之后調用回調函數;
4、信號:觸發信號,執行回調函數;
5、異步的DNS解析:異步解析DNS服務器的DNS解析函數集;
6、事件驅動的HTTP服務器:HTTP服務器;
7、RPC客戶端服務器框架:RPC服務器和客戶端框架,自動的封裝和解封數據結構;
Rectory反應器模式
應用程序提供相應的接口并且注冊到reactor,相應的事件發生之后,rector自動調用相應的注冊的接口函數(類似于回調函數)通知;
簡單的定時器
event_init()
:
evtimer_set()
:
event_add()
:
event_dispatch()
:
TCP服務器
event_base_new()
:
event_set()
:
event_base_set()
:
event_add()
:
event_base_dispatch()
: