• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 200, comments - 8, trackbacks - 0, articles - 0

            翻譯自:http://www.wangafu.net/~nickm/libevent-book/Ref0_meta.html
            轉(zhuǎn)自:
            http://blog.sina.com.cn/s/blog_56dee71a0100q7j6.html

             從一萬英尺外看Libevent

            Libevent是用于編寫高速可移植非阻塞IO應(yīng)用的庫,其設(shè)計(jì)目標(biāo)是:

            v 可移植性:使用libevent編寫的程序應(yīng)該可以在libevent支持的所有平臺上工作。即使沒有好的方式進(jìn)行非阻塞IO,libevent也應(yīng)該支持一般的方式,讓程序可以在受限的環(huán)境中運(yùn)行。

            v 速度:libevent嘗試使用每個(gè)平臺上最高速的非阻塞IO實(shí)現(xiàn),并且不引入太多的額外開銷。

            v 可擴(kuò)展性:libevent被設(shè)計(jì)為程序即使需要上萬個(gè)活動(dòng)套接字的時(shí)候也可以良好工作。

            v 方便:無論何時(shí),最自然的使用libevent編寫程序的方式應(yīng)該是穩(wěn)定的、可移植的。

             

            libevent由下列組件構(gòu)成:

            v evutil:用于抽象不同平臺網(wǎng)絡(luò)實(shí)現(xiàn)差異的通用功能。

            v event和event_base:libevent的核心,為各種平臺特定的、基于事件的非阻塞IO后端提供抽象API,讓程序可以知道套接字何時(shí)已經(jīng)準(zhǔn)備好,可以讀或者寫,并且處理基本的超時(shí)功能,檢測OS信號。

            v bufferevent:為libevent基于事件的核心提供使用更方便的封裝。除了通知程序套接字已經(jīng)準(zhǔn)備好讀寫之外,還讓程序可以請求緩沖的讀寫操作,可以知道何時(shí)IO已經(jīng)真正發(fā)生。(bufferevent接口有多個(gè)后端,可以采用系統(tǒng)能夠提供的更快的非阻塞IO方式,如Windows中的IOCP。)

            v evbuffer:在bufferevent層之下實(shí)現(xiàn)了緩沖功能,并且提供了方便有效的訪問函數(shù)。

            v evhttp:一個(gè)簡單的HTTP客戶端/服務(wù)器實(shí)現(xiàn)。

            v evdns:一個(gè)簡單的DNS客戶端/服務(wù)器實(shí)現(xiàn)。

            v evrpc:一個(gè)簡單的RPC實(shí)現(xiàn)。

             庫

            創(chuàng)建libevent時(shí),默認(rèn)安裝下列庫:

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

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

            v libevent:這個(gè)庫因?yàn)闅v史原因而存在,它包含libevent_core和libevent_extra的內(nèi)容。不應(yīng)該使用這個(gè)庫,未來版本的libevent可能去掉這個(gè)庫。

            某些平臺上可能安裝下列庫:

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

            v libevent_openssl:這個(gè)庫為使用bufferevent和OpenSSL進(jìn)行加密的通信提供支持。它獨(dú)立于libevent_core,這樣程序使用libevent時(shí)就不需要鏈接到OpenSSL,除非是進(jìn)行加密通信。

            3 頭文件

            libevent公用頭文件都安裝在event2目錄中,分為三類:

            v API頭文件:定義libevent公用接口。這類頭文件沒有特定后綴。

            v 兼容頭文件:為已廢棄的函數(shù)提供兼容的頭部包含定義。不應(yīng)該使用這類頭文件,除非是在移植使用較老版本libevent的程序時(shí)。

            v 結(jié)構(gòu)頭文件:這類頭文件以相對不穩(wěn)定的布局定義各種結(jié)構(gòu)體。這些結(jié)構(gòu)體中的一些是為了提供快速訪問而暴露;一些是因?yàn)闅v史原因而暴露。直接依賴這類頭文件中的任何結(jié)構(gòu)體都會(huì)破壞程序?qū)ζ渌姹緇ibevent的二進(jìn)制兼容性,有時(shí)候是以非常難以調(diào)試的方式出現(xiàn)。這類頭文件具有后綴“_struct.h”。

            (還存在不在event2目錄中的較老版本libevent的頭文件,請參考下節(jié):如果需要使用老版本libevent)

            4 如果需要使用老版本libevent

            libevent 2.0以更合理的、不易出錯(cuò)的方式修正了API。如果可能,編寫新程序時(shí)應(yīng)該使用libevent 2.0。但是有時(shí)候可能需要使用較老的API,例如在升級已存的應(yīng)用時(shí),或者支持因?yàn)槟承┰虿荒馨惭b2.0或者更新版本libevent的環(huán)境時(shí)。

            較老版本的libevent頭文件較少,也不安裝在event2目錄中。

            在2.0以及以后版本的libevent中,老的頭文件仍然會(huì)作為新頭文件的封裝而存在。

            其他關(guān)于使用較老版本的提示:

            v 1.4版之前只有一個(gè)庫libevent,它包含現(xiàn)在分散到libevent_core和libevent_extra中的所有功能。

            v 2.0版之前不支持鎖定:只有確定不同時(shí)在多個(gè)線程中使用同一個(gè)結(jié)構(gòu)體時(shí),libevent才是線程安全的。

            下面的節(jié)還將討論特定代碼區(qū)域可能遇到的已經(jīng)廢棄的API。

            5 關(guān)于版本狀態(tài)的提示

            1.4.7及以前版本應(yīng)該被認(rèn)為是完全廢棄的。1.3之前的版本應(yīng)該被認(rèn)為是充滿bug的。

            (此外,不要向libevent維護(hù)者發(fā)送任何關(guān)于1.4.x或者更早版本的新特征,這些版本被認(rèn)為是穩(wěn)定的發(fā)布版本。如果在1.3x或者更早版本中發(fā)現(xiàn)bug,在報(bào)告之前請確定在最新的穩(wěn)定發(fā)布版本中問題仍然存在:后續(xù)發(fā)布可能已經(jīng)解決了問題。)


             

            国内精品久久久久久中文字幕| 久久精品国产精品青草| 国产亚洲美女精品久久久久狼| 久久精品蜜芽亚洲国产AV| 99久久无码一区人妻| 免费观看久久精彩视频| 亚洲а∨天堂久久精品9966| 久久久精品国产| 色偷偷91久久综合噜噜噜噜| 精品人妻久久久久久888| 思思久久99热只有频精品66| 亚洲乱码精品久久久久..| 久久青青草原国产精品免费| 久久天天躁狠狠躁夜夜96流白浆 | 精品伊人久久久| 久久性精品| 久久精品99无色码中文字幕| 武侠古典久久婷婷狼人伊人| 91精品国产综合久久婷婷| 久久99精品久久久久久久久久| 国产精品久久新婚兰兰| 亚洲αv久久久噜噜噜噜噜| 欧洲成人午夜精品无码区久久| 国产精品99久久久精品无码 | 亚洲国产成人久久精品影视| 欧美色综合久久久久久| 狠狠精品久久久无码中文字幕 | 婷婷综合久久中文字幕蜜桃三电影| 久久亚洲国产最新网站| 国内精品久久久久久不卡影院| 久久综合色之久久综合| 色婷婷综合久久久中文字幕| 国产无套内射久久久国产| 久久久精品人妻一区二区三区四| 久久99亚洲综合精品首页| 国产精品无码久久久久久| 77777亚洲午夜久久多喷| 免费精品国产日韩热久久| 91精品国产乱码久久久久久 | 久久亚洲色一区二区三区| 久久精品中文字幕一区|