【Muduo】三大核心之Channel

Muduo网络库的Channel模块是一个关键组件,它封装了文件描述符(fd)及其相关的事件,使得在TCP网络编程中能够利用IO多路复用技术(如epoll/poll)来监听和处理这些文件描述符上的事件。

封装内容

  • 文件描述符(fd):每个Channel对象都对应一个特定的文件描述符,该文件描述符通常代表一个网络连接。
  • 感兴趣的事件(events):Channel对象封装了与文件描述符相关的一组感兴趣的事件,如可读、可写等。
  • 实际发生的事件(revents):当Poller监听到文件描述符上发生某个事件时,会将该事件以及对应的文件描述符通知给Channel对象,Channel对象会保存这些实际发生的事件。
  • 回调函数(callbacks):Channel对象还保存了与每种事件对应的处理函数(回调函数),当相应的事件发生时,这些函数会被调用以处理事件。

主要成员变量

  • loop_:指向所属的事件循环(EventLoop)对象的指针。每个Channel对象都隶属于一个EventLoop,即一个IO线程。
  • 其他成员变量还包括文件描述符(fd)、感兴趣的事件(events)、实际发生的事件(revents)等。

主要功能

  • 设置感兴趣的事件:通过Channel对象的接口,可以设置文件描述符感兴趣的事件类型。
  • 注册/移除事件监听:可以将文件描述符及其感兴趣的事件注册到事件监听器(如epoll)上,也可以从事件监听器上移除已注册的文件描述符。
  • 事件回调处理:当IO多路复用模块监听到

你可能感兴趣的:(Muduo网络库,c++,stl)