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

muduo库的 poller 接口类和Channel分析_第1张图片

 

muduo库的 poller 接口类和Channel分析_第2张图片

 

 

你可能感兴趣的:(muduo)