Poller Class详解(muduo/net)

Poller Class源码阅读(muduo/net)

@(Linux多线程服务端编程:使用muduoC++网络库读书笔记)

Poller Class是一个抽象基类,是对 I / O 多 路 复 用 I/O多路复用 I/O的抽象。它是基于poll(2)PollPoller Class(muduo/net/Poller)和基于epoll(4)EPollPoller Class(muduo/net/Poller)的基类。

数据成员

  • EventLoop* ownerLoop_

Poller所在的EventLoop,Poller只供ownerLoop_ I / O 线 程 I/O线程 I/O线调用,所以无须加锁,不必考虑线程安全。其生命期同其所属的EventLoop

  • std::map<int, Channel*> channels_

Poller所监视的文件描述符,但它不拥有这些Channel,Channel在析构前,需自己unregister(EventLoop::removeChannel),避免指针空悬。

函数成员

  • Poller

构造函数,只负责初始化ownerLoop_

  • poll

纯虚函数,等待就绪事件
timeoutMs:等待时间
activeChannels:已就绪事件
返回值:当前的时间戳

  • void updateChannel(Channel* channel)

纯虚函数,更新/添加channel

  • void removeChannel(Channel* channel)

纯虚函数,移除channel

  • bool hasChannel(Channel* channel) const

检查channel是否被当前Poller监视,即是否在channels_

  • statci Poller* newDefaultPoller(EventLoop* loop)

提供一个静态工厂方法,根据环境变量MUDUO_USE_POLL决定创建PollPoller还是EPollPoller(吴悠大佬)
还没学到定义那儿

  • assertInLoopThread() const

调用EventLoop::assertInLoopThread()判断是否是在 I / O 线 程 I/O线程 I/O线中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值