我从演员模型开始,在理解背后的概念方面遇到了一些问题,请你用简单的例子来解释一下。
问问题
139 次
1 回答
5
首先,让我们明确您所引用的内容。您引用了开放文档,其中讨论了为什么需要新的编程模型。我提到这一点是因为这都是非常计算机科学的理论,与学习 API 没有直接关系。总的来说,我认为这是一个相对较小的问题。
但是,文档的那一段已经给出了几个例子。该段落的要点从根本上说,并发在现代系统中本质上是困难的,并且传统的并发 API 通常会创建具有意想不到的性能后果的抽象。
具体来说,该段落讨论了即使内存是通过并发 API “共享”的,现代 CPU 架构的现实意味着并非所有访问都是平等的。如果一条数据由线程 0 创建并由线程 1 使用,则 CPU 架构最终会使线程 0 上的数据无效并将缓存线传送到线程 1。即,即使内存被标记为“共享”实际上每次不同线程访问该内存时都会显着降低性能。“共享”内存模型是一种错觉,因为 CPU 需要维护各种缓存,这导致内存不是真正共享的,而是来回传递(代价高昂)。
这只是开篇理由的一小部分,但它带来了 Actor 模型提供的并发性的一些好处。由于参与者可以独占访问其状态,因此不仅 API 更简单(因为您不必担心并发性),而且物理 CPU 也不必担心并发性。这不仅您不必担心锁定,而且 CPU 也不必担心锁定:它将能够访问内存,而无需在物理内核/CPU 之间来回传递缓存线。
于 2019-09-28T22:42:47.940 回答