libevent原始碼深度剖析

2021-08-26 03:38:15 字數 722 閱讀 1877

——序幕

張亮上來當然要先誇獎啦,libevent 有幾個顯著的亮點:

事件驅動(event-driven),高效能;

輕量級,專注於網路,不如ace那麼臃腫龐大;

源**相當精煉、易讀;

跨平台,支援windows、linux、*bsd和mac os;

支援多種i/o多路復用技術, epoll、poll、dev/poll、select和kqueue等;

支援i/o,定時器和訊號等事件;

註冊事件優先順序;

libevent已經被廣泛的應用,作為底層的網路庫;比如memcached、vomit、nylon、netchat等等。

libevent當前的最新穩定版是1.4.13;這也是本文參照的版本。

學習libevent有助於提公升程式設計功力,除了網路程式設計方面外,libevent的**裡有很多有用的設計技巧和基礎資料結構,比如資訊隱藏、函式指標、c語言的多型支援、鍊錶和堆等等,都有助於提公升自身的程式功力。

程式設計不止要了解框架,很多細節之處恰恰也是事關整個系統成敗的關鍵。只對libevent本身的框架大概了解,那或許僅僅是一知半解,不深入**分析,就難以了解其設計的精巧之處,也就難以為自己所用。

事實上libevent本身就是乙個典型的reactor模型,理解reactor模式是理解libevent的基石;因此下一節將介紹典型的事件驅動設計模式——reactor模式。

參考資料:

libevent:

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必須和系統時間打交道,這一部分的內容也比較簡單,主要涉及到時間的加減輔助函式 時間快取 時間校正和定時器堆的時間值調整等。下面就結合源 來分析一下。libevent在初始化時會檢測系統時間的型別,通過呼叫函式detect monotonic 完成,它通過...