1. 程式人生 > >Redis原始碼學習之【epoll封裝】

Redis原始碼學習之【epoll封裝】

介紹

在上一篇博文中說到了在Redis 的事件處理中使用到了底層的linux epoll,根據Redis的實現可以使用其他的多路通訊層,但是在一般的linux伺服器中使用的最多的還是epoll所以這裡主要介紹一下epoll。Redis並沒有直接的使用linux的epoll而是對其進行了一個簡單的封裝。

原始碼

ae_epoll.c

分析

在原有的linux epoll的基礎上進行封裝,主要封裝了一下幾個函式:

aeApiCreate:呼叫epoll_create建立epoll的控制代碼,並分配epoll事件。

aeApiFree:呼叫close關閉epoll_create建立的epoll控制代碼,並釋放epoll事件。

aeApiAddEvent:呼叫epoll_ctl向aeEventLoop中新增一個事件。

aeApiDelEvent:呼叫epoll_ctl從aeEventLoop中刪除一個事件。
aeApiPoll:呼叫epoll_wait等待事件。

具體的關於epoll的介紹可以參見博文:點選開啟連結