asynchronous - 这是一个很好的 Dart 习惯用法来暂时中止当前的计算吗?
问题描述
我想不时在长时间运行的计算中产生 CPU,以便可以在同一个隔离中执行其他活动。“await null”做了我想要的,但我想知道是否有不同的、普遍接受的 Dart 习语来做同样的事情?
这是一些代码,以说明我的意思:
import 'dart:async';
import 'dart:math';
void main(args) async {
burnCpu(1);
burnCpu(2);
burnCpu(3);
burnCpu(4);
}
int i = 0;
var r = new Random();
void burnCpu(int id) async {
while (i < 1000000) {
i++;
print("$id: $i");
for (int j = 0; j < 1000000; j++) {
var a = (j / r.nextDouble()).toString() + r.nextDouble().toString();
}
await null;
// See Dart language spec v.2.2 section 16.34, "Await Expressions"
}
}
正如预期的那样,这会产生以下结果:
1: 1
2: 2
3: 3
4: 4
1: 5
2: 6
3: 7
4: 8
1: 9
2: 10
...
我很高兴只使用“await null;”,如果我对语言规范的理解是正确的,它就可以保证工作。但是“await null”虽然合乎逻辑,但看起来有点晦涩难懂。我四处搜寻,看看是否能找到一个常见的成语,但一无所获。有吗?
解决方案
推荐阅读
- java - Logstash 的自定义 JAVA 主页
- javascript - 在 Angular 6 中显示离线模式的错误 html
- java - 在 apache Beam 管道中解析 CSV 以将其发布到 Google pubsub
- c++ - 如何在子类中调用特定的模板方法(用 CRTP 继承 - 解决方案)
- java - 使用远程 SSO 服务器保护 spring websockets
- swift - swift 4 在 UIRefeshControl 之前清空 UITableView
- javascript - 如何将徽标添加到具有 CSS/HTML/JS 和引导程序的网站
- bash - 在 OSX 中展平文件结构时自动覆盖
- spring-boot - “我需要一个类型的 bean”错误:Spring-boot
- windows - 在用户开始菜单 CSIDL_STARTMENU 中创建快捷方式的正确方法