【问题标题】:Dart Isolate vs AkkaDart Isolate vs Akka
【发布时间】:2023-03-28 00:22:01
【问题描述】:

据我了解,Dart 隔离就像 Akka 演员。

但是,我想不通dart:isolate 是否与Akka 有类似的用途。两者有根本区别吗?

dart:isolate 是不是和Akka 一样是actor 模型编程的框架?

是不是dart:isolate 更像 scala actor 而不是 akka。

【问题讨论】:

    标签: dart akka actor dart-isolates


    【解决方案1】:

    Isolates 在很多方面与 Akka actor 不同:

    • 隔离不共享内存,即像 Unix 进程一样被隔离

    • 因此,当使用 spawn 生成隔离区时,当前隔离区中的所有数据都会重复

    • isolate 没有像 receive 这样的中心方法 - 或者,更好的说法是,该方法隐藏在引擎盖下。该方法从执行队列中获取任务并一一执行。这类似于 GUI 线程的工作原理。任务是使用内部回调方法创建的。回调在 Dart 中无处不在。

    【讨论】:

    • Akka 是如何共享内存的?这在我看来不像Distinguishing Features (of Akka) ... Concurrency is message-based and asynchronous; typically no mutable data are shared and ...
    • “通常”意味着程序员应该避免使用共享内存,但 Akka 无法阻止这样做 - doc.akka.io/docs/akka/snapshot/general/jmm.html
    • 感谢您的更新。这似乎是Java的限制。对于隔离,这是默认解决的,但缺点是只有基本类型,如 int/double/String/List/Map 或 List 或这些类型的 Maps 可用于消息。
    • 从您的回答中,推断出隔离体是比 Akka 演员更好的演员是否正确? “更好”是指更接近理想演员。
    • @lihsus 你是说休伊特的演员模特吗?在某些方面更接近,在其他(消息) - 更远。我不是休伊特模特的粉丝,所以做一个“理想演员”并不能激励我。我更喜欢en.wikipedia.org/wiki/Dataflow_programming
    【解决方案2】:

    http://en.wikipedia.org/wiki/Akka_(toolkit) 的描述似乎与 Dart 隔离的描述相似。
    Akka 似乎更高级。例如,如果您与同一主机或另一台主机上的隔离体进行通信,则还没有透明性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      相关资源
      最近更新 更多