深入理解主从Reactor多线程模型

基本概念

Reactor:把IO事件分配给对应的handler处理
Acceptor:处理客户端连接事件
Handler:处理非阻塞的任务

梳理下基于主从Reactor多线程模型的事件处理过程:

    Reactor主线程对象通过select监听连接事件,通过Acceptor处理连接事件

    当Acceptor处理连接事件后,主reactor将连接分配给从Reactor

    从Reactor将连接加入到连接队列进行监听,并创建handler进行各种事件处理

    当有新事件发生时,从reactor就会对用对应的handler处理

    handler读取数据后,分发给后面的worker线程处理

    worker线程池分配独立的worker线程进行处理并返回结果

    handler收到结果后再讲结果返回给客户端

如下图所示

11

可以看到,在主从Reactor多线程模型中,父线程与子线程之间数据交互简单、责任明确,父线程只需接收新连接,后续的处理交给子线程完成即可;主从Reactor多线程模型中,Reactor线程拆分为mainReactor和subReactor两个部分,mainReactor只处理连接事件,读写事件交给subReactor来处理。业务逻辑还是由线程池来处理,mainRactor只处理连接事件,用一个线程来处理就好。处理读写事件的subReactor个数一般和CPU数量相等,一个subReactor对应一个线程,业务逻辑由线程池处理

©️2020 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值