Dart Isolates 的暂停功能未按预期工作

2024-02-20

我一直在玩飞镖分离物 https://api.dartlang.org/stable/1.24.3/dart-isolate/Isolate-class.html并在使用时遇到了问题isolate.pause();功能。

import 'dart:io';
import 'dart:isolate';

main(){
  ReceivePort receivePort = new ReceivePort();
  Isolate.spawn(isolateEntryPoint, receivePort.sendPort).then((isolate){
    isolate.pause(isolate.pauseCapability);
  });
}

void isolateEntryPoint(SendPort sendPort){
  while(true){
    print("isolate is running");
    sleep(new Duration(seconds: 2));
  }
}

在我的示例中,isolate 基本上每 2 秒打印一些内容。

从我读到的docs https://api.dartlang.org/stable/1.24.3/dart-isolate/Isolate/pauseCapability.html,我的理解是上面的代码应该:

  1. 产生一个隔离体
  2. 立即暂停该隔离

但它不起作用,隔离仍在运行,并且每 2 秒打印一次“隔离正在运行”,即使在我告诉它暂停之后也是如此。

我知道你可以start通过传入处于暂停状态的隔离paused: true可选参数:Isolate.spawn(isolateEntryPoint, receivePort, paused: true)...。但最终我希望能够在任何时候暂停隔离,而不仅仅是立即暂停。

我能找到的关于使用它的唯一文档是官方的 dart 文档,所以我可能正在使用isolate.pause()功能不正确。但无论哪种方式,演示该函数的正确用法的代码示例都将受到极大的赞赏。


您是对的,这没有按您的预期工作。

隔离暂停功能的工作原理是暂停事件队列。当前正在执行的事件将完成,然后在恢复隔离之前不会处理进一步的事件。暂停不会影响正在运行的代码。

在此代码中,隔离入口点正在运行具有内置延迟的无限循环。它永远不会返回到事件队列。如果您在循环中安排任何异步操作,它们将永远不会执行。这sleepPrimitive 会休眠整个隔离,但这与什么都不做没有什么不同(只是需要更长的时间)。

您尝试“立即暂停”新的isolate,但是isolates同时运行,并且当Isolate对象被返回。

如果我们不再需要支持编译为 JavaScript 的隔离,将来可能会更改隔离功能,以便更热心地处理控制消息,但目前隔离控制消息实际上是异步的,它们只会生效Dart 事件队列的事件之间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart Isolates 的暂停功能未按预期工作 的相关文章

随机推荐

  • silverlight MatchTimeoutInMilliseconds bug:解决DomainServiceClientCodeGenerator

    银光5 Net框架4 我正在尝试针对 RIA 代码生成器中最近的错误实施解决方法 找不到匹配超时毫秒 https connect microsoft com VisualStudio feedback details 1988437 gen
  • 使用 json 文件动态导入不起作用 typescript

    所以我编写了一个这样的函数来获取多个环境的测试数据 export class DataHelper public static async getTestData fileName string Promise
  • Hadoop:将多个IP地址绑定到集群NameNode

    我在 Softlayer 上有一个四节点 Hadoop 集群 Master NameNode 有一个用于外部访问的公共IP地址和一个用于集群访问的私有IP地址 从节点 数据节点 具有私有IP地址 我试图连接到主节点 而不需要为每个从节点分配
  • Node.js 服务器和客户端之间的变量

    我使用 Node js 运行一个简单的 http 服务器 var http require http var fs require fs var index fs readFileSync index html var sensor req
  • 将 YouTube Iframe API 与 Nativescript 结合使用?

    UPDATE 从 Manoj 下面的代码和其他一些来源 我现在可以将 youtube 播放器加载到基于 Youtube iframe api 的 webview 中 但问题仍然是 如何让我的应用程序识别视频本身何时开始播放 视频加载后以及任
  • Python:在主程序和 PEP 8 开头导入

    The PEP 8 http python org dev peps pep 0008 建议在程序开始时导入模块 现在 我觉得在开始时导入其中一些main程序 即 之后if name main 说得通 例如 如果主程序从命令行读取参数 我倾
  • 一个月内创建的 Rails 范围

    我在编写模型范围时遇到了一些问题 我想根据模型对象发布的月份来过滤模型对象 即模型 BlogPost scope published in month gt date where published date date at beginni
  • 如何指示 Ajax Minifier 从 javascript 中删除 console.log

    我的 js 文件中有这样的行 console log FunctionName 默认 Ajax Minifier 设置不会从 min js 输出中删除这些行 我在这次讨论中注意到关于终止开关的对话 http ajaxmin codeplex
  • idn-ruby 捆绑安装时出错

    我的应用程序中有 twitter text gem 当我进行捆绑安装时 出现以下错误 需要优先解决它 我也去了github页面https github com twitter twitter text issues 225 https gi
  • 图片来源UriKind

    我有一个项目 它的名称是 xx 我创建一个具有以下路径的文件夹 images xx bin 调试 图像 图像仅包含一张照片 其名称为 1 jpg 主窗口包含图像控件 我设置此代码来加载图像源 但它不起作用 为什么 private void
  • 在 AIR 应用程序安装屏幕上显示图标

    是否可以在 AIR 应用程序安装屏幕上显示图标 我下载了一个 AIR 应用程序 我很惊讶地在第二个安装屏幕上看到了一个图标 当您购买 SSL 证书并使用该证书构建 Air 应用程序时 安装过程中会显示此图标
  • SQLite:.Net 比原生慢得多?

    这是我的查询 SELECT FROM GeoName WHERE 26 3665122100029 Lat 26 3665122100029 Lat 27 5978928658078 Long 27 5978928658078 Long l
  • 4 年每日数据的滚动回归,每个新回归和不同因变量提前一个月

    我有 5 个自变量 附加数据中的 B F 列 和一些因变量 附加数据中的 G M 列 我需要针对所有自变量对每个因变量进行多重回归 回归必须有 4 年的数据窗口 并且每个新的估计都必须提前一个月 我需要提取系数并对每个系数进行 vasice
  • Android 图标下方的文本(按钮)

    我正在尝试创建一个主入口界面 我将创建六个按钮 每个按钮将打开另一个活动 对于每个按钮 我希望它有一个大图标 按钮下方有文字 目前 我可以在按钮上显示图像 但我不知道如何使文本显示在按钮下方 我尝试将文本直接放在图像上 但看起来不太好 这是
  • AngularJS : $pristine 用于 ng-check 检查输入

    我有一个包含大约 100 个问题的表单 每个问题都有一个单选按钮和一些复选框 因此我需要用户能够保存该表单并稍后加载 我还需要检查用户在本次会话中更改了哪些内容 这个问题解决了这个问题 如何表示 AngularJS 中哪些输入字段已更改 h
  • 如何将图像从aws s3下载到imageview中?

    所以我希望能够从我的 s3 存储桶中获取图像并 使用 glide 或 picasso 将该图像加载到 imageview 中 我不想将该图像下载到我的手机中 目前我有这个 downloadButton Button findViewById
  • 程序如何执行?操作系统在哪里发挥作用?

    程序从某种语言编译为 ASM gt 机器代码 直接可执行 当人们说这是平台相关时 意味着形成的二进制文件只能在具有相同指令集架构 如 x86 x86 64 的 CPU 上运行 正确 由于 ISA 的差异 它可能 错误地 可能 根本 不在其他
  • Matlab套接字等待响应

    我正在尝试在 matlab 中运行以下客户端和服务器套接字示例代码 http www mathworks com help instrument using tcpip server sockets html http www mathwo
  • 模板化的operator()重载C++

    有人已经问过这个问题 但该线程最终以原始问题没有得到回答 假设你有这个 template
  • Dart Isolates 的暂停功能未按预期工作

    我一直在玩飞镖分离物 https api dartlang org stable 1 24 3 dart isolate Isolate class html并在使用时遇到了问题isolate pause 功能 import dart io