muduo-基于事件的非阻塞TCP网络库
建链&分发图
1 结构:
typedef std::vector PollFdList pollfds_
typedef std::map<int, Channel*> ChannelMap channels_
typedef std::vector<Channel*> ChannelList activeChannels

2 类:
Accepor 生命周期由 TcpServer 控制, TcpServer 直接供用户使用,生命周期由用户可控制。
TcpServer class 管理 accept 获得 TcpConnection,新连接到达, Accepor回调newConnection(),后者创建TcpConnection对象并加入ConnectionMap
TcpConnection使用Channel来获取socket上IO事件,进行处理或传给用户。

3 Buffer:水平触发,分读写区域
读: 利用了额外的栈空间。
写:尝试一次发完,否则剩余数据放入outputbuffer以后发送。

4 多线程:利用EventLoopThreadPool,每次new TcpConnection分配一个loop

5 线程安全策略:runInLoop 将非IO线程的调用放入IO线程队列,供主线程回调。

相关文章:

  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2021-04-24
  • 2021-08-18
  • 2022-01-13
  • 2021-10-04
  • 2021-07-02
猜你喜欢
  • 2021-07-05
  • 2022-12-23
  • 2021-08-28
  • 2022-12-23
  • 2022-12-23
  • 2021-11-10
  • 2022-12-23
相关资源
相似解决方案