概念理解 Libevent

2022-06-19 12:15:14 字數 1421 閱讀 3252

可移植性:

使用 libevent 編寫的程式應該在 libevent 支援跨越的所有平台上工作,即使沒有更好的方法來處理。

非阻塞式io:libevent也應該支援一般的方法使程式可以執行在某些限制的環境中.

速度:  libevent 試圖在每乙個平台實現最快的非阻塞式 io,而不會引入太多的額外開銷. 

可擴充套件性:

libevent 設計為即使在成千上萬的 socket 情況下也能良好工作. 

方便: 無論在什麼情況下,用 libevent 來編寫程式最自然的方式都應該是穩定可靠的.

libevent 由下列元件構成: 

evutil:用於抽象出不同平台網路實現的通用功能. 

eventandevent_base:libevent 的核心,為各種平台特定的、基於事件的非阻塞io後端提供抽象 api,

讓程式可以知道套接字何時已經準備好,可以讀或者寫,並且處理基本的超時功能,檢測os訊號. 

eufferevent:為libevent 基於事件的核心提供使用更方便的封裝.除了通知程式套接字已經準備好讀寫之外,還讓程式可以請求緩衝的讀寫操作,可以知道何時io已經真正發生.

(bufferevent 介面有多個後端,可以採用系統能夠 提供的更快的非阻塞io方式 ,如windows 中的 iocp) 

evbuffer:在bufferevent 層之下實現了緩衝功能,並且提供了方便有效的訪問函式. 

evhttp:乙個簡單的http 客戶端/伺服器實現. 

evdns:乙個簡單的dns 客戶端/伺服器實現. 

evrpc:乙個簡單的rpc 實現.

建立libevent 時,預設安裝下列庫:  

libevent_core:所有核心的事件和緩衝功能,包含了所有的event_base、evbuffer、bufferevent 和工具函式.

 libevent_extra:定義了程式可能需要,也可能不需要的協議特定功能,包括http、dns和rpc.

 libevent:這個庫因為歷史原因而存在,它包含 libevent_core 和 libevent_extra 的內容 .不應該使用這個庫未來版本的libevent。可能去掉這個庫.

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

libevent_pthreads:新增基於 pthread可移植執行緒庫的執行緒和鎖定實現.它獨立於libevent_core,這樣程式使用 libevent 時就不需要鏈結到 pthread,

除非是以多執行緒方式使用libevent. 

libevent_openssl:這個庫為使用 bufferevent 和 openssl 進行加密的通訊提供支援。

它獨立於 libevent_core,這樣 程式使用libevent 時就不需要鏈結到 openssl,除非是進行加密通訊.

libevent個人理解

1 利用了前置宣告來在c語言的基礎上進行封裝操作。即在include目錄下防止event.h等標頭檔案,在這些標頭檔案中只暴露struct的宣告卻不暴露其定義,對於如event base等結構的操作均使用封裝的函式進行,而這些封裝的函式則定義在event.c中,event.c會包含event.h和e...

libevent幾個結構體的理解

struct event base struct event base 這裡要注意struct event list activequeues 為什麼用雙指標,這是因為很多事件的優先順序一致,所以用佇列陣列來存放,這樣導致有些事件不能第一時間處理 struct event 這裡主要理解幾個 tail...

理解記憶體概念

儘管記憶體這個詞常常掛在我們的嘴上,但是,有多少人真正了解記憶體 理解記憶體概念呢?對剛剛步入電腦世界的初學者來說,基本記憶體 上位記憶體 高階記憶體 擴充套件記憶體 擴充記憶體 保留記憶體等概念更是玄之又玄,難以徹底理解。所以我們特地介紹一下記憶體的基本概念。基本知識 記憶體 記憶體就是儲存程式以...