《并发哲学:从编程入道到开悟升天》2.2 投掷者与包工头模型

投掷者与包工头模型

本小节我们将介绍贯穿全书的两大模型,投掷者与包工头模型。

投掷者模型

简述

投掷者模型指将采取并发策略的实体称为投掷者,投掷的物体为抽象化的并发任务,投掷动作为激发并发,物体的飞行指并发任务的客观运行状态。

含义解释

在并发体系的并发任务执行过程中,许多任务是不可控的,或者换言之是很难被发起者控制的。在计算机体系内,诸如http请求,数据库链接等跨程序通信手段,一旦通讯发出,受网络质量、链路情况、请求端处理等客观条件限制,这些任务将可以理解为具有天然的“不可控”性。深入地说,在程序内部,往往最底层交由硬件的执行,电讯号的触发,这些脱离本身计算机程序逻辑思考范畴的物理变化,也同样可以理解为相对程序来说“不可控”。

这就好比丢出去的石头,我可以看到它,可以看到它的飞行状态,可以看到石头的飞行数量,但是不能控制它,或者说是很难控制它。

对于并发目的,该模型能较好地解释,具体体现在,投掷是为了达成高阶目的,同时确保远程攻击不受自己当前行为的制约,在投掷动作产生后,利用自然规律达成目的。与并发所需达到的目的一致,也就是虽然有花费更多精力在任务调度上,但总体看来,系统实现的价值应该有提升。

对于并发其他相关的概念,该模型也可较好的引入启发。例如并发控制,在投掷者模型里,如果需要控制并发任务数量,我们需要从哪个阶段下手呢?通过情景化的分析,我想我们能比较容易的得出,实现并发任务(飞行的石头)的控制,我们需要也只能在投掷前进行检查,通过综合观察石头飞行数量、飞行状态(并发任务执行数量与状态),来决定投掷者是否应该继续丢出石头。换言之,实现并发控制我们最好应该在并发任务下发前对系统状态进行检查,从而决定并发任务是否应该启动。

模型同样具有缺点,缺点在于,该模型对于下发的任务与主任务之间的主动通讯无法进行很好的解释,毕竟石头是死的。但需要指出,此处缺点和该模型对于不可控状态的理解体现的优势是相互冲突的,不可控或者说是难控制的并发任务,原因就在于无法发起主动通信并作出自我调整。包工头模型将致力于解决这个问题,同时引入更加丰富的场景联想。

包工头模型

简述

包工头模型采取社会化生产的基本模型对并发相关概念进行理解。采取并发策略的实体称为包工头,派遣工人进一步干活称为下发并发任务,工人的工作指并发任务的客观运行状态。

含义解释

该模型的显著缺点在于,纯粹在体系内,无法对于不可控的并发任务进行强有力解释,但是可以涵盖剩余所有的关于并发相关的知识点理解。并且,通过和投掷者模型的有机结合,

大部分的并发设计,来源于程序内部。依托有限资源,通过更加合理的资源分配,依托客观可以并行运行的分立子系统,实现了更优的价值创造效率。就好比有了创业启动资金,光包工头一个人干,资源很多很充裕,但是即便包工头个人的劳动力拉满,也不如多叫来几个人一起干更加有效率。

在并发通信方面,该模型可以抽象出纯信号的通信措施——例如手机、微信等,也可以抽象出依托资源的通信措施,例如“目标是装满一个房间,A工人看到房间内已经满了便不在操作”,如此的一个句子,便折射出消费者-生产者,基于容器状态和容量进行并发控制等诸多思想。

该模型良好兼容并发任务与并发任务之间可以通信这一解释要求。从人的角度理解,如果是要理解不同物体间的通讯及其相关需要考虑周全的点,一定是人与人之间的交流这一个概念最容易理解。石头与石头的交流等其他的可能性,太过抽象。

该模型良好兼容嵌套并发。在复杂系统中,并发任务的组织可能不是只有一个层级。并发任务内部还可以进一步划分任务,下发并进入并发状态。就好比包工头手下的工人如果有想法,依托其自己的资源,进一步划分,依然可以继续招募工人,为其打工。

该模型具有充分扩展性,基于包工头模型的各种社会性行为,几乎涵盖了除了非人类世界外规律的所有,是因果律武器,今后更新的并发相关概念,一定可以与包工头模型相融。

为什么该两大模型具有显著优势

从上文的分析中,我们可以看到,投掷者模型与包工头模型都可以解释一些常见的并发要素,尽管本书进行到现在对于并发的概念没有具体的编程实现,但是并发系统所应该具有的一些基本要素,我想你应该能够大致清楚。并发系统所需要的任务分配、任务观察,并发实现更优效率客观需要的并行要素,评估并发效率所需要的量化指标,在包括这两大模型的其他各类模型内,都有或多或少的说明,人们也可以基于这些模型进行对并发各类概念的理解。但本小节两大模型,对于并发系统中不可控自然运行状态,和嵌套并发,更好的故事可扩展性方面,是不可替代的。究其原因,就是因为这两大模型是基于并发本源进行的抽象。回顾1.1,我们从同时画方圆引入,讲到人类在投掷上所体现出的高级神经桥进化,就是这一点。为什么会说投掷的进化,会代表着语言等沟通协作能力的显著提升?答案在本小节可以找到些许答案——因为他们都是并发这一共同思想的具体实现。

Intel借助流水线概念,抽象化并实践为优秀的工程指导思想,引入处理器,引领那个时代的***,我们可以看到,基于现实经典行为的抽象,将大大有助于我们理解并思考高级的工程设计,开拓我们的思路。

希望你能从今天开始,尝试将以前在理解并发中体会的种种概念,套用在投掷者模型和包工头模型上,让这两大模型成为两大“样板文”,成为任何程序、任何系统框架下都可以套用的典范。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务