gpt4 book ai didi

firefox - Firefox 扩展中的并发和多线程

转载 作者:行者123 更新时间:2023-12-03 06:58:18 32 4
gpt4 key购买 nike

我正在使用附加构建器和附加 SDK 编写 Firefox 扩展。到目前为止,我已经能够解决任何限制,而无需迁移到 XUL。但是,我遇到了障碍。

我的扩展程序有一个长时间运行的进程,可能会阻塞,因此我需要将此处理与主 UI 线程分开。我已阅读问题here ,但它并不能完全回答我的问题。 Web Workers 还不够,因为长时间运行的进程需要访问 js-ctypes 和 native 代码。所以,看起来 ChromeWorker可能会成功。但是,我不知道如何从附加构建器访问它。此外,线程管理器只能通过 C++ 代码访问。我怎样才能:

  1. 访问并实例化 Chrome Workers(或)
  2. 创建线程(或)
  3. 假并发(以某种方式)

避免阻塞 UI 线程。或者,我可以在 native 代码中推出自己的代码(我试图避免这种情况)。

最佳答案

您应该使用 Chrome Worker,它们专门用于在不同线程上使用 js-ctypes。线程管理器存在问题,并且出于某种原因不允许从 JavaScript 使用它。然而,主要问题是 ChromeWorker 构造函数未在附加 SDK 模块中公开。但你可以从 chrome 伪模块获取它:

var self = require("sdk/self");
var {ChromeWorker} = require("chrome");
var worker = new ChromeWorker(self.data.url("worker.js"));

这仅适用于 Firefox 8,在早期版本中,您会 use the worker factory 。但我想您不需要这个 - 新的附加 SDK 版本无论如何都不支持 Firefox 9 以下的任何版本。

注意:如果您的附加组件被禁用或卸载(例如使用 unload module ),您应该确保关闭此工作器,它不会自动发生。

编辑:Matthew Ruttley 在他的 detailed blog post 中描述了一种导入 chrome 工作人员的更简单方法。 ,我相应地更新了这个答案。

关于firefox - Firefox 扩展中的并发和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502281/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com