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

时间:2017-10-03 10:47:41

标签: async-await dart blocking nonblocking

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

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

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

2 个答案:

答案 0 :(得分:4)

Isolate类可以在VM中运行多个线程,也可以在浏览器中运行webworkers。

编辑:编写代码来证明这一点,或者调用google搜索" dartlang示例隔离"这不是我的工作。代表你。我的回答准确地回答了你的问题您使用隔离区运行多个线程,并且它们可以执行独立的长时间运行计算,通过端口相互通信。

答案 1 :(得分:2)

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

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

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

如果计算执行异步操作(这意味着等待别的东西),那么其他东西就会运行。