1. 程式人生 > >muduo庫的 poller 介面類和Channel分析

muduo庫的 poller 介面類和Channel分析

muduo庫內的 timerfd eventfd socketfd 等檔案描述符,一般註冊讀寫事件一般通過以下流程:

當一個fd想要註冊可讀事件時,首先通過

Channel::enableReading()-> 
Channel::update(this)-> 
EventLoop::updateChannel(Channel)-> 
Poller::updateChannel(Channel*)

呼叫鏈向poll系統呼叫的偵聽事件表註冊或者修改註冊事件。

1. updateChannel(Channel*) :用於將傳入的Channel關心的事件註冊給Poller。

2. poll(int timeoutMs,vector< channel* > activeChannels):其呼叫poll獲得當前活動的事件集合,將就緒事件所屬的Channel呼叫fillActiveChannels()加入到呼叫方傳入的 activeChannels_ 中。