gpt4 book ai didi

scala - 什么时候 Actor 不合适?

转载 作者:行者123 更新时间:2023-12-04 16:55:49 26 4
gpt4 key购买 nike

每当我需要同时运行两个线程时,我都会使用 Actor 。我从不明确使用线程。

有人告诉我 Actor 很重,使用它们并不总是一个好主意。

  • 什么是使用actors的正确场景以及什么时候不使用它们?
  • 我的一些 Actor 只是有一个循环但没有反应。这是一个好习惯吗?

  • [编辑]
  • 在 Actor 的循环中使用 Thread.sleep 是不好的做法吗?
  • 最佳答案

    Actors 提供了一种分布式异步算法和消息传递计算模型,并且最适合适合该模型的任务。

    Scala 的 actor 可以共享内存,这对于依赖内存共享的算法来说已经足够了,但并不是特别如此,因为您放弃了 actor 的主要优势。另一方面,也没有特别的缺点。

    Distributed Computing在维基百科上了解更多信息。

    有两类主要任务不太适合:

  • 严重依赖同步的任务

    这与锁无关,或者在开始其他事情之前等待某事。同步系统的主要特征是高度依赖于任务的时间顺序。

    例如,如果您需要知道哪个任务先完成,那么参与者缺乏对消息顺序的保证会使它们不适合。
  • 本质上是 data parallel 的任务

    这是对不同数据 block 执行相同计算的情况,它们之间没有依赖关系。

    map-reduce 算法的“map”部分适合这种情况。

    虽然 Actor 可以做到这一点,但同样的事情也可以通过 fork/join 设置来完成,而且开销更少。 Scala 2.9 将具有针对此类任务的并行集合。
  • 关于scala - 什么时候 Actor 不合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5805103/

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