libevent原始碼深度剖析四

2021-07-10 18:01:32 字數 1129 閱讀 1837

摘自:      sparkliang (已經收藏)   該鏈結中還有很多其他的優秀介紹

——libevent源**檔案組織

詳細分析源**之前,如果能對其**檔案的基本結構有個大概的認識和分類,對於**的分析將是大有裨益的。本節內容不多,我想並不是說它不重要!

libevent的源**雖然都在一層資料夾下面,但是其**分類還是相當清晰的,主要可分為標頭檔案、內部使用的標頭檔案、輔助功能函式、日誌、libevent框架、對系統i/o多路復用機制的封裝、訊號管理、定時事件管理、緩衝區管理、基本資料結構和基於libevent的兩個實用庫等幾個部分,有些部分可能就是乙個原始檔。

源**中的test部分就不在我們關注的範疇了。

1)標頭檔案

主要就是event.h:事件巨集定義、介面函式宣告,主要結構體event的宣告;

2)內部標頭檔案

***-internal.h:內部資料結構和函式,對外不可見,以達到資訊隱藏的目的;

3)libevent框架

event.c:event整體框架的**實現;

4)對系統i/o多路復用機制的封裝

epoll.c:對epoll的封裝;

select.c:對select的封裝;

devpoll.c:對dev/poll的封裝;

kqueue.c:對kqueue的封裝;

5)定時事件管理

min-heap.h:其實就是乙個以時間作為key的小根堆結構;

6)訊號管理

signal.c:對訊號事件的處理;

7)輔助功能函式

evutil.h 和evutil.c:一些輔助功能函式,包括建立socket pair和一些時間操作函式:加、減和比較等。

8)日誌

log.h和log.c:log日誌函式

9)緩衝區管理

evbuffer.c和buffer.c:libevent對緩衝區的封裝;

10)基本資料結構

compat/sys下的兩個原始檔:queue.h是libevent基本資料結構的實現,包括鍊錶,雙向鍊錶,佇列等;_libevent_time.h:一些用於時間操作的結構體定義、函式和巨集定義;

11)實用網路庫

http和evdns:是基於libevent實現的http伺服器和非同步dns查詢庫;

libevent原始碼深度剖析

序幕 張亮上來當然要先誇獎啦,libevent 有幾個顯著的亮點 事件驅動 event driven 高效能 輕量級,專注於網路,不如ace那麼臃腫龐大 源 相當精煉 易讀 跨平台,支援windows linux bsd和mac os 支援多種i o多路復用技術,epoll poll dev pol...

libevent原始碼深度剖析

上來當然要先誇獎啦,libevent 有幾個顯著的亮點 事件驅動 event driven 高效能 輕量級,專注於網路,不如ace那麼臃腫龐大 源 相當精煉 易讀 跨平台,支援windows linux bsd和mac os 支援多種i o多路復用技術,epoll poll dev poll sel...

libevent原始碼深度剖析

序幕 張亮上來當然要先誇獎啦,libevent 有幾個顯著的亮點 事件驅動 event driven 高效能 輕量級,專注於網路,不如ace那麼臃腫龐大 源 相當精煉 易讀 跨平台,支援windows linux bsd和mac os 支援多種i o多路復用技術,epoll poll dev pol...