首页 > 解决方案 > 这是一个很好的 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”虽然合乎逻辑,但看起来有点晦涩难懂。我四处搜寻,看看是否能找到一个常见的成语,但一无所获。有吗?

标签: asynchronousdart

解决方案


推荐阅读