亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

redis源碼筆記-ae.h

系統 2492 0

ae框架是redis作者開發的事件處理框架,其目的和libevent項目類似。redis本著最小依賴原則,自己實現了一套,而且速度更快。ae只有不到500行代碼,但據說libevent有3萬加的代碼,實現這一個功能所付出的代碼量已經超過了redis所有的代碼量。

ae.h

      
         1
      
      
        #ifndef __AE_H__

      
      
         2
      
      
        #define
      
       __AE_H__

      
         3
      
      
//同時支持的連接數,其實這個還是可以設的更大一些 4 #define AE_SETSIZE (1024*10) /* Max number of fd supported */ 5 6 #define AE_OK 0 7 #define AE_ERR -1 8 9 #define AE_NONE 0 10 #define AE_READABLE 1 11 #define AE_WRITABLE 2 12
//ae框架處理兩類事件,file event和time event 13 #define AE_FILE_EVENTS 1 14 #define AE_TIME_EVENTS 2 15 #define AE_ALL_EVENTS (AE_FILE_EVENTS|AE_TIME_EVENTS) 16 #define AE_DONT_WAIT 4 17 18 #define AE_NOMORE -1 19 20 /* Macros */ 21 #define AE_NOTUSED(V) ((void) V) 22 23 struct aeEventLoop; 24
//為方便使用定義的函數指針別名 25 /* Types and data structures */ 26 typedef void aeFileProc( struct aeEventLoop *eventLoop, int fd, void *clientData, int mask); 27 typedef int aeTimeProc( struct aeEventLoop *eventLoop, long long id, void * clientData);
//這個函數類似于析構函數,在event刪除前調用
28 typedef void aeEventFinalizerProc( struct aeEventLoop *eventLoop, void * clientData); 29 typedef void aeBeforeSleepProc( struct aeEventLoop * eventLoop); 30
//文件事件結構,是一個數組 31 /* File event structure */ 32 typedef struct aeFileEvent { 33 int mask; /* one of AE_(READABLE|WRITABLE) */ 34 aeFileProc * rfileProc; 35 aeFileProc * wfileProc; 36 void * clientData; 37 } aeFileEvent; 38
//時間事件結構,是一個鏈表 39 /* Time event structure */ 40 typedef struct aeTimeEvent { 41 long long id; /* time event identifier. */ 42 long when_sec; /* seconds */ 43 long when_ms; /* milliseconds */ 44 aeTimeProc * timeProc; 45 aeEventFinalizerProc * finalizerProc; 46 void * clientData; 47 struct aeTimeEvent * next; 48 } aeTimeEvent; 49
//表示即將執行的事件 50 /* A fired event */ 51 typedef struct aeFiredEvent { 52 int fd; 53 int mask; 54 } aeFiredEvent; 55 56 /* State of an event based program */ 57 typedef struct aeEventLoop { 58 int maxfd; 59 long long timeEventNextId; 60 aeFileEvent events[AE_SETSIZE]; /* Registered events */ 61 aeFiredEvent fired[AE_SETSIZE]; /* Fired events */ 62 aeTimeEvent * timeEventHead; 63 int stop; 64 void *apidata; /* This is used for polling API specific data */ 65 aeBeforeSleepProc * beforesleep; 66 } aeEventLoop; 67 68 /* Prototypes */ 69 aeEventLoop *aeCreateEventLoop( void ); 70 void aeDeleteEventLoop(aeEventLoop * eventLoop); 71 void aeStop(aeEventLoop * eventLoop); 72 int aeCreateFileEvent(aeEventLoop *eventLoop, int fd, int mask, 73 aeFileProc *proc, void * clientData); 74 void aeDeleteFileEvent(aeEventLoop *eventLoop, int fd, int mask); 75 int aeGetFileEvents(aeEventLoop *eventLoop, int fd); 76 long long aeCreateTimeEvent(aeEventLoop *eventLoop, long long milliseconds, 77 aeTimeProc *proc, void * clientData, 78 aeEventFinalizerProc * finalizerProc); 79 int aeDeleteTimeEvent(aeEventLoop *eventLoop, long long id); 80 int aeProcessEvents(aeEventLoop *eventLoop, int flags); 81 int aeWait( int fd, int mask, long long milliseconds); 82 void aeMain(aeEventLoop * eventLoop); 83 char *aeGetApiName( void ); 84 void aeSetBeforeSleepProc(aeEventLoop *eventLoop, aeBeforeSleepProc * beforesleep); 85 86 #endif

redis源碼筆記-ae.h


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91在线播放免费不卡无毒 | 国模私拍视频在线 | 成人不卡在线 | 亚洲成人伦理 | 亚洲视频在线免费观看 | 日本亚洲精品成人 | 久久精品视频免费看 | 国产亚洲综合精品一区二区三区 | 国产精品成人久久久久 | 99在线热播精品免费 | 成年人视频在线免费 | 国产在播放一区 | 国产亚洲一区呦系列 | 狠狠操91| 日韩 欧美 亚洲 | 色视频在线观看视频 | 国产精品婷婷久青青原 | 欧美视频在线网站 | 国产一区二区三区免费在线观看 | 男人私人影院免费看视频 | 女人隐私秘视频黄www免费 | 亚洲综合色站 | 日韩中文字幕免费观看 | 欧美香蕉在线 | 欧美jizzhd精品欧美4k | 看一下毛片| 性做久久久久免费看 | 亚洲成人国产 | 狠狠操狠狠操 | 99视频国产热精品视频 | 曰本一级毛片免费播放 | 欧美精品影院 | 国产精品亚洲精品久久成人 | 最新日韩在线 | 久久这里只有精品66 | 性欧美4k高清精品 | 精品色综合 | 中文字幕伊人 | 在线观看国产一区二三区 | 手机在线看福利 | 天天干天天草天天 |