摘自: 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...