请在简单的dart代码片段中演示,执行内部控制的计算(例如优化或模型拟合)的while循环(除了从不透明的外部上下文控制的操作,如文件访问)可以以交错方式运行。
我的假设是,除非在每个while循环中运行阻塞指令,如文件访问或使用Web套接字,否则不可能。
关于dart中异步编程的文档在这个意义上没有提到术语“阻塞”。有关vertx(java应用程序服务器库)中的异步编程的文档。但我不知道后者是否可以推广,因为平台可以实现异步编程的不同意图。
答案 0 :(得分:4)
Isolate
类可以在VM中运行多个线程,也可以在浏览器中运行webworkers。
编辑:编写代码来证明这一点,或者调用google搜索" dartlang示例隔离"这不是我的工作。代表你。我的回答准确地回答了你的问题您使用隔离区运行多个线程,并且它们可以执行独立的长时间运行计算,通过端口相互通信。
答案 1 :(得分:2)
我不确定你的问题是什么。如果我理解正确,你的假设是正确的。
Dart在每个隔离区内都是单线程的。每个隔离区中一次只能执行一件事。
这确实意味着从不进行异步操作的长计算将不会与其他计算交错。
如果计算执行异步操作(这意味着等待别的东西),那么其他东西就会运行。