-1

并发计算模型包括actor模型、CSP、Petri网等。

并发模式包括活动对象、屏障、反应器、监视器、调度器等

  1. 并发计算模型和并发模式之间有什么区别(也可能是关系)?有趣的是,维基百科的设计模式模式模板在并发模式下列出了“Actor 模型”。这让我更加不确定我上面提出的问题。

  2. 我对它们没有太多了解,但是并发模型似乎比并发模式更经常被提及。并发模式会失宠吗?

  3. 可以混合使用不同的并发模式和不同的并发模型,还是某些并发模式只与某些并发模型一起使用?

如果可能,您能否提供一些参考资料来支持您的回复或评论?

4

1 回答 1

2

因此,并发计算模型是对并发系统进行数学建模和思考的方式。例如,在一篇理论性很强的研究论文中的参与者模型并没有真正说明参与者如何实现,而只是参与者的要求,它只是一种对并发系统进行数学推理的方式。模式只是构建代码的方法,与仅用于并发的设计模式相同。区别是(imo)与演员之类的东西有点模糊,如果你使用akka之类的东西,那么你的代码模式就是“让一切都成为演员”。

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

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

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

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

编辑

您可以在代码中随意混合匹配计算模型和模式,而且您很可能会这样做。话虽这么说,如果您使用一些像演员模式这样的模式,它们几乎是灵丹妙药。例如,Actor 使锁定变得多余。如果你正在写一篇研究论文,你可能不会混合计算模型,虽然我不是学者所以我真的不知道 :)

于 2019-06-27T13:49:17.520 回答