前面講過evport/epoll/kqueue的實現,下來我們繼續看看我們select在redis中的使用
1:首先通過fd_zero來清空用於監控讀和寫fd的rfds和wfds的鍊錶
typedef struct aeapistate aeapistate;
static int aeapicreate(aeeventloop *eventloop)
2:通過fd_set 將要監控fd對應的bit為寫道讀事件state->rfds 或者寫事件state->wfds
static int aeapiaddevent(aeeventloop *eventloop, int fd, int mask)
3:通過select 監控fd
static int aeapipoll(aeeventloop *eventloop, struct timeval *tvp)
}return numevents;
}
redis中io復用之kqueue
前面講過evport epoll的實現,下來我們繼續看看我們kqueue在redis中的使用 1 首先通過kqueue申請提供給系統監控的fd typedef struct aeapistate aeapistate static int aeapicreate aeeventloop eventl...
Linux系統程式設計 IO多路復用之select
i o 多路復用技術是為了解決程序或執行緒阻塞到某個 i o 系統呼叫而出現的技術,使程序不阻塞於某個特定的 i o 系統呼叫。select poll epoll 都是i o多路復用的機制。i o多路復用通過一種機制,可以監視多個描述符,一旦某個描述符就緒 一般是讀就緒或者寫就緒,就是這個檔案描述符...
I O 復用之 poll 函式
poll 函式提供的功能與 select 類似,不過在處理流裝置時,它能提供額外的資訊。include int poll struct pollfd fdarray,unsigned long nfds,int timeout 返回值 若有就緒描述符則為其數目,若超時則為 0,若出錯則為 1 str...