# 《并发设计模式》第54章-流水线模式-到底什么是流水线模式

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:了解流水线模式的核心原理与使用场景,初步掌握流水线模式的应用场景,能够初步结合自身项目实际场景思考如何将流水线模式灵活应用到自身实际项目中。

大家好,我是冰河~~

流水线模式的核心思想是将一个大的任务分解成若干个不同的处理阶段,每个处理阶段的输出结果数据作为下一个处理阶段的输入,并且每个阶段都会有对应的工作线程执行相应的任务和计算。所以,使用流水线处理任务时,每个任务的各个处理阶段是并行的。这种并行任务处理和计算,能够充分利用系统的CPU资源,提供任务处理和计算的效率。

# 一、故事背景

小菜在开发实时统计社区电商系统交易额的功能时,看似一个非常简单的功能,但是开发完成后,提交测试反馈的结果是性能太差。但是目前以小菜的功力无法独立解决性能差的问题。在老王的指导下,小菜明白了性能差的原因,也知道了解决这种场景问题的最佳方案是流水行模式,那到底什么是流水线模式呢?

# 二、工厂流水线

为了大家能够更好的理解流水线的概念,这里我们举一个工厂流水线的例子,我们可以想象一下工厂里的流水线工人,比如某食品加工厂的流水线操作如图54-1所示。


可以看到,对于某食品加工厂来说,从原料到成品要经历清洗原料、切配、预煮和蒸煮、冷却和包装、杀菌和包装以及成品检验几个步骤。每一个步骤都会有专门的人员进行处理,例如有专门的人员清洗原料,专门的人员进行切配等。

清洗原料的人员将原料清洗完毕,立刻传送到切配工序,此时有专门的人员进行切配,切配完又会传送到预煮和蒸煮工序,由专门的人员进行预煮和蒸煮,以此类推。

这里,我们可以想象一个场景:那就是清洗原料的人员会不停的清洗原料,而切配的人员会不停的切配,整个流水线上的每个工序都是并行执行的,如图54-2所示。


可以看到,在食品加工厂的流水线上,会将一个流水线的操作划分成多个工序,每个流水线的不同工序之间是可以并行处理的,这样就不必等到一个流水线的所有操作都完成后,再去开启下一个流水线操作,以此来提升整体的加工效率。

# 三、计算机流水线

简单介绍完工厂的流水线后,我们再来看看计算机中的流水线。计算机中的流水线核心思想和工厂中的流水线基本相同,但是还是有细微的差别。

# 3.1 流水线的概念

流水线是指在程序执行时,多条指令重叠进行操作的一种准并行处理的实现技术。各种部件同时处理是针对不同指令而言的,它们同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。

流水线的相关参数计算包括:流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率,如图54-3所示。

# 查看全文

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码