libevent學(xué)習(xí)筆記

一亩冬、libevent是什么

libevent是一個輕量級的開源的高性能的事件觸發(fā)的網(wǎng)絡(luò)庫,適用于windows覆享、linux营袜、bsd等多種平臺,內(nèi)部使用select凤壁、epoll跪另、kqueue等系統(tǒng)調(diào)用管理事件機制。

它被眾多的開源項目使用免绿,例如大名鼎鼎的memcached等。

特點:

事件驅(qū)動淌哟,高性能;

輕量級,專注于網(wǎng)絡(luò)(相對于ACE);

開放源碼腐碱,代碼相當精煉掉弛、易讀;

跨平臺,支持Windows筒饰、Linux壁晒、BSD和Mac OS;

支持多種I/O多路復(fù)用技術(shù)(epoll业栅、poll、dev/poll携取、select和kqueue等)帮孔,在不同的操作系統(tǒng)下,做了多路復(fù)用模型的抽象晤斩,可以選擇使用不同的模型姆坚,通過事件函數(shù)提供服務(wù);

支持I/O,定時器和信號等事件;

采用Reactor模式;

二兔辅、下載

libevent1.4代碼量比較少,結(jié)構(gòu)比較簡單,也適合入門學(xué)習(xí),1.4很早以前看過了,大家想學(xué)習(xí)也可以學(xué)習(xí)1.4击喂。

這里學(xué)習(xí)的是libevent2.0以上版本。代碼量也比1.4高很多懂昂,也加了很多功能。

libevent下載:http://libevent.org/

我下載的是libevent-2.1.8-stable.tar.gz

下載之后解壓潮尝,然后進入目錄就可以安裝了。

[eric@localhost libevent-2.1.8-stable]$ ./configure

[eric@localhost libevent-2.1.8-stable]$ make

[eric@localhost libevent-2.1.8-stable]$ sudo make install

[eric@localhost libevent-2.1.8-stable]$ sudo ldconfig /usr/local/lib/libevent.so

我們可以看到有以下一些庫羹蚣。

libevent_core:所有核心的事件和緩沖功能乱凿,包含了所有的event_base徒蟆、evbuffer、bufferevent和工具函數(shù)段审。

libevent_extra:定義了程序可能需要,也可能不需要的協(xié)議特定功能抑淫,包括HTTP姥闪、DNS和RPC。

libevent:這個庫因為歷史原因而存在催式,它包含libevent_core和libevent_extra的內(nèi)容避归。不應(yīng)該使用這個庫,未來版本的libevent可能去掉這個庫喉童。

libevent_pthreads:添加基于pthread可移植線程庫的線程和鎖定實現(xiàn)顿天。它獨立于libevent_core,這樣程序使用libevent時就不需要鏈接到pthread咽白,除非是以多線程方式使用libevent鸟缕。

三排抬、libevent的功能授段。

Libevent提供了事件通知,io緩存事件届搁,定時器窍育,超時,異步解析dns表锻,事件驅(qū)動的http server以及一個rpc框架乞娄。

事件通知:當文件描述符可讀可寫時將執(zhí)行回調(diào)函數(shù)。

Io緩存:緩存事件提供了輸入輸出緩存码耐,能自動的讀入和寫入溶其,用戶不必直接操作io敦间。

定時器:libevent提供了定時器的機制,能夠在一定的時間間隔之后調(diào)用回調(diào)函數(shù)厢绝。

信號:觸發(fā)信號带猴,執(zhí)行回調(diào)。

異步的dns解析:libevent提供了異步解析dns服務(wù)器的dns解析函數(shù)集靶病。

事件驅(qū)動的http服務(wù)器:libevent提供了一個簡單的口予,可集成到應(yīng)用程序中的HTTP服務(wù)器。

RPC客戶端服務(wù)器框架:libevent為創(chuàng)建RPC服務(wù)器和客戶端創(chuàng)建了一個RPC框架煤辨,能自動的封裝和解封數(shù)據(jù)結(jié)構(gòu)。

四端三、Reactor(反應(yīng)器)模式

libevent是一個典型的reactor模式的實現(xiàn)鹃彻。這里做一下簡單介紹:

我們知道技肩,普通的函數(shù)調(diào)用機制如下:程序調(diào)用某個函數(shù),函數(shù)執(zhí)行浮声,程序等待虚婿,函數(shù)將結(jié)果返回給調(diào)用程序(如果含有函數(shù)返回值的話),也就是順序執(zhí)行的泳挥。

而Reactor模式的基本流程如下:應(yīng)用程序需要提供相應(yīng)的接口并且注冊到reactor反應(yīng)器上然痊,如果相應(yīng)的事件發(fā)生的話,那么reactor將自動調(diào)用相應(yīng)的注冊的接口函數(shù)(類似于回調(diào)函數(shù))通知你屉符,所以libevent是事件觸發(fā)的網(wǎng)絡(luò)庫剧浸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市矗钟,隨后出現(xiàn)的幾起案子唆香,更是在濱河造成了極大的恐慌吨艇,老刑警劉巖躬它,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異东涡,居然都是意外死亡冯吓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門疮跑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來组贺,“玉大人,你說我怎么就攤上這事祖娘∈Ъ猓” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵渐苏,是天一觀的道長掀潮。 經(jīng)常有香客問我,道長整以,這世上最難降的妖魔是什么胧辽? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮公黑,結(jié)果婚禮上邑商,老公的妹妹穿的比我還像新娘摄咆。我一直安慰自己,他們只是感情好人断,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布吭从。 她就那樣靜靜地躺著,像睡著了一般恶迈。 火紅的嫁衣襯著肌膚如雪涩金。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天暇仲,我揣著相機與錄音步做,去河邊找鬼。 笑死奈附,一個胖子當著我的面吹牛全度,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斥滤,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼将鸵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了佑颇?” 一聲冷哼從身側(cè)響起顶掉,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挑胸,沒想到半個月后痒筒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡嗜暴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年凸克,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闷沥。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖咐容,靈堂內(nèi)的尸體忽然破棺而出舆逃,到底是詐尸還是另有隱情,我是刑警寧澤戳粒,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布路狮,位于F島的核電站,受9級特大地震影響蔚约,放射性物質(zhì)發(fā)生泄漏奄妨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一苹祟、第九天 我趴在偏房一處隱蔽的房頂上張望砸抛。 院中可真熱鬧评雌,春花似錦、人聲如沸直焙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奔誓。三九已至斤吐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厨喂,已是汗流浹背和措。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜕煌,地道東北人臼婆。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像幌绍,于是被迫代替她去往敵國和親颁褂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一傀广、libevent是什么 libevent是一個輕量級的開源的高性能的事件觸發(fā)的網(wǎng)絡(luò)庫颁独,適用于windows、l...
    飯飯H閱讀 680評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理伪冰,服務(wù)發(fā)現(xiàn)誓酒,斷路器,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 轉(zhuǎn)自:http://blog.csdn.net/kesonyk/article/details/50924489 ...
    晴天哥_王志閱讀 24,807評論 2 38
  • 值得學(xué)習(xí)的C語言開源項目 WebbenchWebbench是一個在linux下使用的非常簡單的網(wǎng)站壓測工具贮聂。它使用...
    碼腦閱讀 5,091評論 6 88
  • 兩年的時間一直在做移動編程靠柑,最近總結(jié)并記錄下一點兒C++的知識,以備查閱吓懈。 C語言開源項目 Webbench We...
    小李龍彪閱讀 1,617評論 1 28