41.muduo学习笔记之net_EPollPoller.{h&cc}

1. 说明

  1. 一个EPollPoller类,需要了解关于epoll的相关知识,主要是三个函数
    • epoll_create1
    • epoll_wait
    • epoll_ctl

2. 变量

  1. 类型定义

    • EventList,epoll_event结构的列表
  2. epollfd_

    • 用epoll_create1()返回的epollfd,构造函数中就生成了
  3. events_

    • EventList类型
  4. channels_

    • 继承过来的,map<int,Channel*>类型
  5. static const int kInitEventListSize = 16;

    • 如名,存储响应事件列表的大小,即同时处理的最大事件数

3. 函数

1. 私有

  1. void fillActiveChannels(int numEvents,
    ChannelList* activeChannels) const;

    • 遍历events_列表,这个列表就是相应事件列表,实际上就是关注的Channel,把这些Channel加入到参数activeChannels中
  2. void update(int operation, Channel* channel);

    • 调用epoll_ctl()函数,根据参数的操作进行处理,更新epoll关注事件
  3. static const char* operationToString(int op);

    • 把操作方式变为字符串返回

2. 公有(除了构造都是重载)

  1. 构造

    • 初始化变量
  2. 析构

    • close(epollfd_)
  3. Timestamp poll(int timeoutMs, ChannelList* activeChannels)

    • 通过epoll_wait()调用(返回活跃fd的数量),调用私有函数fillActiveChannels()把活跃的通道加入到参数activeChannels中
  4. void updateChannel(Channel* channel) override;

    • 如果这个channel不在epoll队列中就加入.在的话就更新一下,都调用的私有函数update()
  5. void removeChannel(Channel* channel) override;

    • 通过一系列操作把这个channel删除了,从关注的channel中删除,从epoll中删除这个关注事件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值