最近兩天看了看libevnet 源代碼~,主要學習資料是源代碼libevent-2.0.21-stable、html
Libevent是一個用於開發可擴展性網絡服務器的基於事件驅動(event-driven)模型的網絡庫。Libevent有幾個顯著的亮點:
(1)事件驅動(event-driven),高性能;
(2)輕量級,專一於網絡;
(3)源代碼至關精煉、易讀;
(4)跨平臺,支持 Windows、Linux、*BSD和 Mac Os;
(5)支持多種 I/O多路複用技術, epoll、poll、dev/poll、select 和kqueue 等;
(6)支持 I/O,定時器和信號等事件;
(7)註冊事件優先級;
Libevent 已經被普遍的應用,做爲底層的網絡庫;好比 memcached、等等。react
libevent 是Reactor 反應器模式。服務器
源代碼中總要的結構:網絡
一、struct event_base. 主要控制結構,至關於Reacot模式中的reactor。 主循環,底層調用 epoll_wait()等 多路複用機制。memcached
二、struct event . 事件處理程序的抽象(結構體中包含回調函數,由event_base 觸發), 由event_base管理 。 event_base經過鏈表、二叉堆來管理event,用於優先級、定時器管理。函數
參考了以及下面幾個博客,這幾個博客已經總結的很好了:性能
http://blog.csdn.net/sparkliang/article/category/660506學習
http://www.cnblogs.com/hustcat/archive/2010/08/31/1814022.htmlspa