這部分**是具體事件觸發網路庫的底層實現。linux下有epoll設施,而且其效率是現在最高的。注意即使高效如redis,其也只是選擇了自動檔-水平觸發(自動檔和手動檔的典故請自行google)。據說libevent也是使用的水平觸發。廢話不多說,看**吧。
1 #include 23 typedef struct
aeapistate aeapistate; //作為eventloop結構的apidata儲存78
static
int aeapicreate(aeeventloop *eventloop)
1718
static
void aeapifree(aeeventloop *eventloop)
2425
static
int aeapiaddevent(aeeventloop *eventloop, int fd, int
mask)
4243
static
void aeapidelevent(aeeventloop *eventloop, int fd, int
delmask) else60}
6162
static
int aeapipoll(aeeventloop *eventloop, struct timeval *tvp) 81}
82return
numevents;83}
8485
static
char *aeapiname(void
)
redis原始碼閱讀筆記
在redis中乙個資料庫結構體是這樣的 每個dict是乙個hash表 typedef struct redisdb redisdb dict欄位中存放以key值為鍵,以value指標為值的hash表項dict根據型別的不同分為如下幾種 1 字串 string 操作 set key value get...
redis原始碼學習筆記
目錄 1 從資料結構開始 圖為原始碼,附帶個人簡單分析 a 動態字串 檔案 sds.h sds.c 前言 s sizeof struct sdshdr 的解釋為buf為柔性陣列,不占用空間,僅僅為偏移量,所以s指標向後退乙個結構體大小為結構體位址所在。分析 這個結構是整個動態字串的基礎,sds為 s...
Redis原始碼筆記 跳表
redis 只有在 zset 物件的底層實現用到了跳表,跳表的優勢是能支援平均 o logn 複雜度的節點查詢。zset 物件是唯一乙個同時使用了兩個資料結構來實現的 redis 物件,這兩個資料結構乙個是跳表,乙個是雜湊表。這樣的好處是既能進行高效的範圍查詢,也能進行高效單點查詢。zset 物件能...