gpt4 book ai didi

ruby - Actor 模型取代线程模型?

转载 作者:数据小太阳 更新时间:2023-10-29 06:30:18 28 4
gpt4 key购买 nike

我在一本书(布鲁斯·A·泰特 (Bruce A. Tate) 七周学习七种语言)中读到关于 Matz(Ruby 的发明者)的一章说“我会删除线程并添加参与者,或其他一些更高级的并发功能”。

  • 为什么 actor 模型可以成为替代线程的高级并发模型?
  • “高级并发模型”还有哪些其他模型?

最佳答案

与其说actor模型会取代线程,还不如说;在 cpu 级别,进程仍将有多个线程,这些线程在处理器内核上进行调度和运行。 Actor 的想法是用一种模型取代这种潜在的复杂性,它的支持者认为,这种模型使程序员更容易编写可靠的代码。

actors 的想法是拥有独立的控制线程(Erlang 的说法是进程),它们专门通过消息传递进行通信。更传统的编程模型是共享内存,并使用互斥锁协调线程之间的通信。这仍然发生在 actor 模型的表面之下,但细节被抽象掉了,并且程序员被赋予了基于消息传递的可靠原语。

重要的一点是,actor 不一定将 1-1 映射到线程——在 Erlang 的情况下,它们肯定不会——每个内核线程通常会有许多 Erlang 进程。因此,必须有一个调度程序将参与者分配给线程,并且这个细节也从应用程序程序员那里抽象出来。

如果您对 actor 模型感兴趣,您可能想看看它在 Erlang 中的工作方式。或 Scala .

如果你对其他类型的新并发热点感兴趣,你可能想看看software transactional memory ,一种可以在 clojure 和 haskell 中找到的不同方法。

值得一提的是,许多创建高级并发模型的更积极的尝试似乎都是在函数式语言中发生的。可能是因为我相信(我自己也喝了一些这种饮料)不变性使并发变得容易得多。

关于ruby - Actor 模型取代线程模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524499/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com