我刚刚从 Google 了解到有关 Dart 的信息,想知道是否可以使用 Dart 获得真正的并行性。据我所知,我的回答是否定的,因为最终它像 Javascript 一样运行(我无法评论它如何在 Dart VM 上运行)但是为什么引入 async 和 await 关键字的设计决定? 这会变成类似 Erlang 的东西吗?
最佳答案
一个 Dart 应用程序可以由一个或多个 isolate 组成。隔离作为线程运行(其他实现也是可能的)并并行运行(也在不同的 CPU 上)。 Isolate 之间的通信通过消息传递进行。
单个隔离中的代码是单线程的,根本没有并行性。执行是事件驱动的。另见 https://webdev.dartlang.org/articles/performance/event-loop
async
/await
只是让异步代码看起来更像同步代码的语法糖,但它不会让代码运行同步。
关于javascript - Dart 是真正的并行还是并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410210/