libevent中文參考手冊

libevent中文參考手冊

ID:9799749

大小:8.91 MB

頁數(shù):103頁

時間:2018-05-10

libevent中文參考手冊_第1頁
libevent中文參考手冊_第2頁
libevent中文參考手冊_第3頁
libevent中文參考手冊_第4頁
libevent中文參考手冊_第5頁
資源描述:

《libevent中文參考手冊》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Libevent參考手冊:前言1從一萬英尺外看LibeventLibevent是用于編寫高速可移植非阻塞IO應(yīng)用的庫,其設(shè)計目標是:v可移植性:使用libevent編寫的程序應(yīng)該可以在libevent支持的所有平臺上工作。即使沒有好的方式進行非阻塞IO,libevent也應(yīng)該支持一般的方式,讓程序可以在受限的環(huán)境中運行。v速度:libevent嘗試使用每個平臺上最高速的非阻塞IO實現(xiàn),并且不引入太多的額外開銷。v可擴展性:libevent被設(shè)計為程序即使需要上萬個活動套接字的時候也可以良好工作。v方便:無論何時,最自然的使用libevent編寫程序的

2、方式應(yīng)該是穩(wěn)定的、可移植的。?libevent由下列組件構(gòu)成:vevutil:用于抽象不同平臺網(wǎng)絡(luò)實現(xiàn)差異的通用功能。vevent和event_base:libevent的核心,為各種平臺特定的、基于事件的非阻塞IO后端提供抽象API,讓程序可以知道套接字何時已經(jīng)準備好,可以讀或者寫,并且處理基本的超時功能,檢測OS信號。vbufferevent:為libevent基于事件的核心提供使用更方便的封裝。除了通知程序套接字已經(jīng)準備好讀寫之外,還讓程序可以請求緩沖的讀寫操作,可以知道何時IO已經(jīng)真正發(fā)生。(bufferevent接口有多個后端,可以采用系統(tǒng)

3、能夠提供的更快的非阻塞IO方式,如Windows中的IOCP。)vevbuffer:在bufferevent層之下實現(xiàn)了緩沖功能,并且提供了方便有效的訪問函數(shù)。vevhttp:一個簡單的HTTP客戶端/服務(wù)器實現(xiàn)。vevdns:一個簡單的DNS客戶端/服務(wù)器實現(xiàn)。vevrpc:一個簡單的RPC實現(xiàn)。2庫創(chuàng)建libevent時,默認安裝下列庫:vlibevent_core:所有核心的事件和緩沖功能,包含了所有的event_base、evbuffer、bufferevent和工具函數(shù)。vlibevent_extra:定義了程序可能需要,也可能不需要的協(xié)議

4、特定功能,包括HTTP、DNS和RPC。vlibevent:這個庫因為歷史原因而存在,它包含libevent_core和libevent_extra的內(nèi)容。不應(yīng)該使用這個庫,未來版本的libevent可能去掉這個庫。某些平臺上可能安裝下列庫:vlibevent_pthreads:添加基于pthread可移植線程庫的線程和鎖定實現(xiàn)。它獨立于libevent_core,這樣程序使用libevent時就不需要鏈接到pthread,除非是以多線程方式使用libevent。vlibevent_openssl:這個庫為使用bufferevent和OpenSSL進

5、行加密的通信提供支持。它獨立于libevent_core,這樣程序使用libevent時就不需要鏈接到OpenSSL,除非是進行加密通信。3頭文件libevent公用頭文件都安裝在event2目錄中,分為三類:vAPI頭文件:定義libevent公用接口。這類頭文件沒有特定后綴。v兼容頭文件:為已廢棄的函數(shù)提供兼容的頭部包含定義。不應(yīng)該使用這類頭文件,除非是在移植使用較老版本libevent的程序時。v結(jié)構(gòu)頭文件:這類頭文件以相對不穩(wěn)定的布局定義各種結(jié)構(gòu)體。這些結(jié)構(gòu)體中的一些是為了提供快速訪問而暴露;一些是因為歷史原因而暴露。直接依賴這類頭文件中的任

6、何結(jié)構(gòu)體都會破壞程序?qū)ζ渌姹緇ibevent的二進制兼容性,有時候是以非常難以調(diào)試的方式出現(xiàn)。這類頭文件具有后綴“_struct.h”。(還存在不在event2目錄中的較老版本libevent的頭文件,請參考下節(jié):如果需要使用老版本libevent)4如果需要使用老版本libeventlibevent2.0以更合理的、不易出錯的方式修正了API。如果可能,編寫新程序時應(yīng)該使用libevent2.0。但是有時候可能需要使用較老的API,例如在升級已存的應(yīng)用時,或者支持因為某些原因不能安裝2.0或者更新版本libevent的環(huán)境時。較老版本的libev

7、ent頭文件較少,也不安裝在event2目錄中。在2.0以及以后版本的libevent中,老的頭文件仍然會作為新頭文件的封裝而存在。其他關(guān)于使用較老版本的提示:v1.4版之前只有一個庫libevent,它包含現(xiàn)在分散到libevent_core和libevent_extra中的所有功能。v2.0版之前不支持鎖定:只有確定不同時在多個線程中使用同一個結(jié)構(gòu)體時,libevent才是線程安全的。下面的節(jié)還將討論特定代碼區(qū)域可能遇到的已經(jīng)廢棄的API。5關(guān)于版本狀態(tài)的提示1.4.7及以前版本應(yīng)該被認為是完全廢棄的。1.3之前的版本應(yīng)該被認為是充滿bug的。(

8、此外,不要向libevent維護者發(fā)送任何關(guān)于1.4.x或者更早版本的新特征,這些版本被認為是穩(wěn)定的發(fā)布版本

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。