并发计算模型和并发模式之间有什么区别?

时间:2019-06-26 11:07:36

标签: design-patterns concurrency computer-science actor-model

Concurrent computational models包括参与者模型,CSP,Petri网等。

Concurrency patterns包括活动对象,屏障,反应堆,监视器,调度程序等

  1. 并发计算模型与并发模式之间有什么区别(可能还有关系)? 有趣的是,wikipedia's Design Patterns patterns template在并发模式下列出了“ Actor模型”。这让我更加不确定上面我问过的问题。

  2. 我没有太多接触它们的知识,但是并发模型似乎比并发模式更常被提及。并发模式是否失宠?

  3. 可以以混合匹配的方式使用不同的并发模式和不同的并发模型,还是某些并发模式仅用于某些并发模型?

如果可能,您能提供一些参考资料来备份您的回复或评论吗?

1 个答案:

答案 0 :(得分:2)

因此,并发计算模型是数学建模和思考并发系统的方式。例如,在理论上非常繁重的研究论文中,参与者模型实际上并没有说明如何实现参与者,而仅是参与者的要求,而只是数学上对并发系统进行推理的一种方式。模式只是构造代码的方式,与仅用于并发的设计模式相同。区别是(imo)与actor之类的东西有些模糊,如果使用akka之类的东西,那么代码的模式就是“使所有事物成为actor。”

并发模式只是一种设计模式,它使用某些系统原语/语言功能来生成正确的并发实现。

计算模型是对某些计算进行数学推理的一种方式。

所有并发模式均基于基础计算模型。在计算机科学中,您应该能够在数学上/逻辑上证明程序的正确性,因此您可以说所有并发模式都可以得到证明,或者在实现之前基于某种抽象的数学模型。

也许是一个不完美的例子,但是许多语言中的lambda和闭包都是基于lambda演算的。因此,如果我告诉您使用lambda作为网络请求的回调,那么我所谈论的是一种依赖于lambda演算的计算模型的模式。

修改

您可以在代码中随意混合匹配的计算模型和模式,并且您很可能会这样做。话虽如此,如果您正在使用某些模式,例如actor模式,则几乎是灵丹妙药。例如,Actor使锁定变得多余。如果您正在撰写研究论文,尽管我不是学者,所以您可能不会混合计算模型,所以我真的不知道:)