對libevent進行一下簡要的總結,libevent將socket、訊號事件、定時器進行統一管理;
libevent首先會檢查操作支援那種型別的多路復用函式,檢查順序為:evport、kqueue、epoll、devpoll、poll、select。
主要研究了一下libevent 對socket的管理,訊號事件處理和定時器處理粗略看過(本文主要以epoll多路復用方式下的情況進行了簡要的總結)。
在libevent中,所有資料結構的跟為:struct event_base* current_base;
event_base資料結構簡要介紹:
struct event_base ;
current_base 將libevent的所有資料結構串聯在了一起,總結資料結構主要為:多路復用所用的資料結構、註冊訊息元素資料結構、啟用訊息元素資料結構以及時間管理的堆結構
(備註,訊號事件同socket事件同用乙個資料結構);
現主要對struct epollop進行簡要的介紹:
struct epollop ;
struct evepoll ;
event顧名思義是libevent的核心,比較簡單,就不要介紹啦;
現按照使用libevent的順序對各種操作的資料結構進行簡要介紹;
示例**:#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct event_base *main_base;
struct event szevent[1024];
int nglobalcount =0 ;
void time_cb(int fd,short event,void *argc)
void buffered_on_read(struct bufferevent *bev, void * arg)
void rw_data(const int nfd,short event,void *arg)
;short int nretsize = 0;
if(event & ev_read)
}
if(event & ev_write)
}int ncount = 0;
void accept_handle(const int sfd, const short nevent, void *arg)
*/printf("accept_handle/n/n");
}int main(int argc,char** argv)
libevent總結學習
memcached用了libevent,但是redis沒有用libevent。redis的 還沒有libevent的三分之一。libevent有下面幾大部分組成 事件管理包括各種io socket 定時器 訊號等事件,也是libevent應用最廣的模組 快取管理是指evbuffer功能 dns是li...
libevent學習過程
libevent是工作時維護人家的 碰到的,得深入了解,記錄一下學習過程。首先的問題是libevent是什麼?查了一下,有個基本認識。libevent 是乙個用c語言編寫的 輕量級的開源高效能事件通知庫,主要有以下幾個亮點 事件驅動 event driven 高效能 輕量級,專注於網路。什麼是事件通...
libevent學習筆記 setvbuf 函式
函式名 setvbuf 用 法 int setvbuf file stream,char buf,int type,unsigned size type 期望緩衝區的型別 iofbf 滿緩衝 當緩衝區為空時,從流讀入資料。或者當緩衝區滿時,向流寫入數 據。iolbf 行緩衝 每次從流中讀入一行資料或...