Libevent原始碼剖析 事件event

2021-08-04 20:23:44 字數 611 閱讀 4150

libevent 是基於事件驅動(event-driven)的,從名字也可以看到 event 是整個庫的核心。event 就是 reactor 框架中的事件處理程式元件;它提供了函式介面,供 reactor 在事件發生時呼叫,以執行相應的事件處理,通常它會繫結乙個有效的控制代碼。首先給出 event 結構體的宣告,它位於 event.h 檔案中,我直接給出帶注釋的**:

//乙個event管理三種事件,i/o事件,訊號事件和定時事件

struct event ;

其中,ev_flags的巨集定義型別有:

#define evlist_timeout	0x01 // event在time堆中 

#define evlist_inserted 0x02 // event在已註冊事件鍊錶中

#define evlist_signal 0x04 // 未見使用

#define evlist_active 0x08 // event在啟用鍊錶中

#define evlist_internal 0x10 // 內部使用標記

#define evlist_init 0x80 // event已被初始化

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