Dart 作为 Worker 进行隔离

2024-01-03

编辑以使问题更清楚。

我正在尝试在 Dart 中使用 Isolates(或 Web Workers)。我能找到在主线程和隔离线程之间进行通信的唯一方法是send and 打电话然后从主线程。但这是主线程将一些数据传递给隔离的好方法。

如果我希望分离株成为产生信息的人怎么办?就像游戏引擎一样,它在工作线程中完成所有物理操作,然后将更新的世界信息发送到主线程?在 JavaScript 中,您可以随时发送数据。 Dart 有没有一种有效的方法?还是我还得等主线程调用我再传给它?

附:我想知道,是吗打电话然后阻塞线程直到回复完成或未完成?


从 Dart 1.0 开始,您可以像这样使用隔离:

import 'dart:isolate';
import 'dart:async';

void doStuff(SendPort sendPort) {
  print('hi from inside isolate');
  ReceivePort receivePort = new ReceivePort();
  sendPort.send(receivePort.sendPort);

  receivePort.listen((msg) {
    print('Received in isolate: [$msg]');
    sendPort.send('ECHO: $msg');
  });

}

void main() {
  SendPort sendPort;

  ReceivePort receive = new ReceivePort();
  receive.listen((msg) {
    if (sendPort == null) {
      sendPort = msg;
    } else {
      print('From isolate: $msg');
    }
  });

  int counter = 0;

  Isolate.spawn(doStuff, receive.sendPort).then((isolate) {
    new Timer.periodic(const Duration(seconds:1), (t) {
      sendPort.send('Count is ${counter++}');
    });
  });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 作为 Worker 进行隔离 的相关文章

随机推荐

  • JavaScript 中逗号运算符的作用是什么?

    如果我使用 1 09 1 returns 1 09 但如果我使用 1 09 1 returns 9 我知道 1 09 不是一个数字 最后一段代码中的逗号有什么作用 更多示例 if 0 9 alert ok alert if 9 0 aler
  • ReportLab 是否有可流动的 matplotlib?

    我想将 matplotlib 图表嵌入到 ReportLab 直接生成的 PDF 中 即不先保存为 PNG 然后将 PNG 嵌入到 PDF 中 我想我会得到更好质量的输出 有谁知道ReportLab是否有matplotlib flowabl
  • Netlogo:带有两个列表的“foreach”命令

    我有一个完整的有向图 每个链接都有自己的权重 我已经成功地选择了每只海龟的最大输出链接 但是 有时两只乌龟的最大输出链接彼此相反 导致两个彼此相反的链接被选择 如果发生这种情况 我希望具有较低值的链接消失 我用这个创建了两个列表 set m
  • 阻止 MassTransit 为消费者主机创建 RabbitMQ 交换

    是否可以将 MassTransit 配置为不为消费者主机创建 RabbitMQ 交换 我的 RabbitMQ 用户没有足够的权限在消费队列所在的主机上声明交换 因此 MassTransit 无法启动并出现以下错误 Unhandled Exc
  • 使用 postMessage 跨域 iframe 调整大小

    我已经在这里阅读了所有跨域 iframe 帖子 感谢你们所有人 和其他地方 postMessage 脚本位于跨域 iframe 调整大小 https stackoverflow com questions 5606920 cross dom
  • setResourceValue NSURLTagNamesKey 错误

    尝试使用 setResourceValue 将标签颜色设置为蓝色时出现错误 var error NSError let listofTags NSWorkspace sharedWorkspace fileLabels let theURL
  • “application/octet-stream”而不是 application/csv?

    我对 Python 还很陌生 我想确认数据集的类型 下面代码中的URL 确实是一个csv文件 但是 当通过标题检查时 我得到 application octet stream 而不是 application csv 我假设我在读取数据时以错
  • ActionResult AcceptVerbsAttribute 默认 HTTP 方法有哪些?

    我知道您可以通过添加 AcceptVerbsAttribute 来限制特定 ActionResult 方法响应哪些 HTTP 方法 例如 AcceptVerbs HttpVerbs Get public ActionResult Index
  • 从 UIPageViewController 中删除视图控制器

    奇怪的是没有直接的方法来做到这一点 考虑以下场景 您有一个包含 1 页的页面视图控制器 添加另一个页面 共 2 个 并滚动到该页面 我想要的是 当用户滚动回到第一页时 第二页现在被删除并释放 并且用户无法再滑回该页面 我尝试在转换完成后将视
  • 如何计算 luxon 中两个日期之间的持续时间?

    Luxon s 的文档Duration fromISO method https moment github io luxon docs class src duration js 7EDuration html static method
  • HTML - 按钮 - 如何使其可链接?

    我有一个像这样的按钮
  • Ubuntu Github ssh 密钥问题

    我遵循了本指南中给出的每个步骤 http help github com linux key setup http help github com linux key setup 当我读到最后时 我可以 ssh 到 电子邮件受保护 cdn
  • Node JS:从树 json 制作平面 json

    我正在编写一个 node js 脚本来组合目录中的所有 json 文件并将结果存储为新的 json 文件 我尝试在很大程度上完成这项工作 但它有一些缺陷 A json id addEmoticon1 description Message
  • C64 组件 - 6502/6510 - 依次显示一系列三个位图,然后进入字符模式

    我这里有一个很大的问题 我发现仅靠几本参考书 互联网和你的真实资料很难回答这个问题 我只想显示一个位图 等几秒钟 把它从记忆中抹去 显示另一个位图 再等一下 把那个从记忆中抹掉 显示最终位图 等最后一次吧 而且 你已经猜到了 把它从记忆中抹
  • Chrome 切换到 OSX 通知后,网络推送通知未显示

    由于 Chrome 切换到本机 OSX 通知 有时我尝试使用网络推送和我的 Service Worker 显示的通知不会出现 它们在 Chrome 的早期版本中一致出现 自从他们开始做这项工作以来 我应该改变什么吗 确保 请勿打扰 已关闭
  • 快速字符串替换

    在构建了一个可能非常大的字符串后 我将对其进行大量更改 将其中的单个字符 或字节 如果需要 更改为另一个字符 实际上 我的脚本正在构建一个填字游戏 因此字符串不会很长 但我的问题很笼统 我如何利用我不改变字符串 或任何更好的数据类型 长度的
  • 如何增加 UIButton 的点击区域?

    I use UIButton具有自动布局 当图像较小时 点击区域也较小 我可以想象几种方法来解决这个问题 增加图像尺寸 即在图像周围放置透明区域 这不好 因为当您定位图像时 您必须记住额外的透明边框 使用 CGRectInset 并增加大小
  • 在 Solaris 上构建 Node.JS:“使用 仅在 c99 编译环境中有效。”

    我正在尝试在 Solaris 上安装 Node JS 这是开箱即用的 Solaris 9 10 x86 最新版本是 2010 年 9 月 并且仅使用默认软件包 我遵循的方向在这里 https github com joyent node w
  • 在Android 4.0.3中设置textview淡入淡出

    我刚刚尝试实现淡入淡出效果TextView在安卓4 0 3中 然而 它不起作用 fadingEdge horizontal singleLine true ellipsize marquee 此代码适用于 2 3 7 及以下版本 但不适用于
  • Dart 作为 Worker 进行隔离

    编辑以使问题更清楚 我正在尝试在 Dart 中使用 Isolates 或 Web Workers 我能找到在主线程和隔离线程之间进行通信的唯一方法是send and 打电话然后从主线程 但这是主线程将一些数据传递给隔离的好方法 如果我希望分