muduo-基于事件的非阻塞TCP网络库

muduo整体流程
在这里插入图片描述
one loop per thread + thread pool 架构实现
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线程队列,供主线程回调。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值