libevent原始碼深度剖析一

2021-05-23 23:59:16 字數 891 閱讀 8297

libevent原始碼深度剖析一

——序幕

張亮附帶一句:libevent是用c語言編寫的(ms大牛們都偏愛c語言哪),而且幾乎是無處不函式指標,學習其源**也需要相當的c語言基礎。

2 libevent簡介

上來當然要先誇獎啦,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;這也是本文參照的版本。

3 學習的好處

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

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

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

參考資料:

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...