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_ 中。