小编Jim*_*mon的帖子

在 Dart 中跟踪 Isolate 状态的最佳方法是什么?

我正在尝试使用isolate.addOnExitListener(...) 来跟踪isolate 当前是否正在运行(以及将来是否出错)。但是,以下代码片段并未按我的预期工作:

items.forEach((name, item) async {
      Isolate isolate = await Isolate.spawnUri(...);
      item.status = "running";
      ReceivePort receivePort = new ReceivePort();
      isolate.addOnExitListener(receivePort.sendPort);
      receivePort.listen((message){
        if (message == null) {
          print("Item exited: ${item.name}");
          item.status = "stopped";
        }
      });
});
Run Code Online (Sandbox Code Playgroud)

“items”映射包含 3 个值,每个值都有不同的名称:item1、item2、item3

当我运行此代码时,我得到的唯一输出是:“Item exited: item3”

我期望以下输出(不一定按顺序,因为隔离是异步的):“项目退出:项目1”“项目退出:项目2”“项目退出:项目3”

这是在隔离区中运行的代码:

import 'dart:io';
main(List args) {
  print('Hello world: standard out!');
  stderr.writeln('Hello world: standard error!');
}
Run Code Online (Sandbox Code Playgroud)

似乎关闭正在丢失。我在这里做错了什么吗?有没有更好的方法来跟踪隔离状态?

提前致谢!

dart dart-isolates

5
推荐指数
1
解决办法
4005
查看次数

使用 Google Cloud CDN 进行 HTTP2 推送?

是否可以将 HTTP2 Push 与 Google Cloud CDN 结合使用?如果是这样,它是否足够聪明来理解并使用 Push-manifest.json 来执行此操作?

google-cloud-cdn

5
推荐指数
0
解决办法
1004
查看次数

标签 统计

dart ×1

dart-isolates ×1

google-cloud-cdn ×1