使用 async 和 await 交错执行 Dart 语言中的 while 循环

Interleaved execution of while loops in the Dart language using async and await

请在一个简单的 dart 代码片段中演示在内部控制下执行计算(例如优化或模型拟合)的 while 循环(除了从不透明的外部上下文控制的操作,如文件访问)可以是 运行 以交错的方式。

我的假设是,除非在每个 while 循环中有一个 运行 阻塞指令,例如文件访问或使用网络套接字,否则这是不可能的。

dart 中有关异步编程的文档没有在这个意义上提到术语 "blocking"。 vertx(java 应用程序服务器库)中关于异步编程的文档确实如此。但我不知道后者是否可以推广,因为平台可以实现关于异步编程的不同意图。

Isolate class 可以 运行 虚拟机中的多个线程或浏览器中的网络工作者。

编辑:我的工作不是编写代码来证明这一点,也不是代表您在 "dartlang examples isolates" 上调用 google 搜索。我的回答准确地回答了你的问题。您 运行 多个线程使用 isolates,它们可以进行独立的长时间 运行ning 计算,这些计算通过端口相互通信。

我不确定你的问题是什么。你的假设,如果我理解正确的话,是正确的。

Dart 在每个隔离区内都是单线程的。每个 isolate 中一次只能执行一件事。

这确实意味着从不执行异步操作的长计算不会与其他计算交错。

如果计算执行异步操作(这意味着等待其他事情),那么其他事情确实会到达 运行。