我是从演员模型开始的,在理解背后的概念时有一些问题,你能用一个例子简单地解释一下吗?
发布于 2019-09-29 06:42:48
首先,让我们弄清楚你引用的是什么。您引用了opening documentation的内容,其中讨论了为什么需要新的编程模型。我提到这一点是因为这些都是非常计算机科学的理论,与学习API没有直接关系。总体而言,我认为这是一个相对次要的问题。
但是,文档的这一段已经给出了几个例子。该段的根本观点是,并发在现代系统中本质上是困难的,并且传统的并发API通常会创建具有意外性能后果的抽象。
具体地说,该段讨论了即使内存是通过并发API“共享”的,现代CPU架构的现实意味着并不是所有的访问都是平等的。如果线程0创建了一段数据,并且线程1使用了它,那么CPU体系结构最终会使线程0上的数据无效,并将高速缓存线传送到线程1。即,即使内存被标记为“共享”,每次不同的线程访问该内存时,实际上也会有显著的性能损失。“共享”内存模型是一种错觉,因为CPU需要维护各种缓存,这些缓存导致内存不是真正被共享,而是来回传递(以巨大的成本)。
这只是开场理由中的一个小问题,但它带来了Actor模型提供的并发性的一些好处。因为参与者独占地访问其状态,不仅API更简单(因为您不必担心并发性),物理CPU也不必担心并发性。这样,您不仅不必担心锁,而且CPU也不必担心锁:它将能够访问内存,而不必在物理核心/CPU之间来回传递缓存线。
https://stackoverflow.com/questions/58148964
复制相似问题