并发编程的线程模型

本篇博客是对线程工作模型的一个整理,对目前的一些编程模型做个整理。整理于一篇文章:详情点我        

串行同步模型:

一般的程序都是该模型,该模型有一个wroker线程接收任务请求,然后处理完毕后返回处理结果。分为两个动作,接收任务,处理任务。这个过程是一个阻塞和同步的。我们可以任务这种模型是处理一些简单并且不耗时的任务。

 

 在很多业务场景下,任务可能执行的较慢,所以我们增加了一个任务接收器,由任务接收器把任务堆积到任务池。然后再由后面

的任务处理器进行任务拉取。为什么这种模型是拉取,而不是任务队列往处理器推,一般是因为任务处理器的处理速度不够高。任务需要慢慢的在后台进行处理。

 

 

      

 

再往后可以是多任务器处理方案,我认为可以选择两种处理方案:一个是由任务队列发布任务,把任务负载均衡到任务处理器上,任务队列自己需要实现一种均衡策略。另一种是由任务处理器自行拉取 ,并且多个任务处理器不能同时拉取同一个任务,需要做互斥。

 

          reactor线程模型关注的是:任务接受之后,对处理过程继续进行切分,划分为多个不同的步骤,每个步骤用不同的线程来处理,也就是原本由一个线程处理的任务现在由多个线程来处理,每个线程在处理完自己的步骤之后,还需要将任务转发到线程继续进行处理。为了进行区分,在reactor线程模型中,处理任务并且分发的线程,不再称之为worker thread,而是reactor thread

单线程reactor线程模型

多线程reactor线程模型

 

混合型reactor线程模型

 

 综上:reactor模型没什么好说的了,感觉针对的是一些较为复杂的任务,要经过多个步骤,比如网络传输,要经过编码,解码,拆包,解包,序列化与反序列化等多个步骤。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值