【问题标题】:Web Worker threads randomly hanging in FirefoxWeb Worker 线程随机挂在 Firefox 中
【发布时间】:2014-10-16 23:00:00
【问题描述】:

我遇到了 Web Worker 线程随机挂起的问题。这仅在 Firefox(版本 32.0.3)中发生。我有一个按钮,当单击该按钮时,它会从我的 API 中获取一个大列表,并通过在 web 工作者中使用线程池通过threadpool.js 实现的线程合并排序对其进行排序。整个系统在 Chrome 中运行得非常好,但每 10 次执行中就有 1 次在 Firefox 中挂起。如果我单击该按钮以在前一个挂起时发生另一个提取/排序(每次执行都会创建一个新的线程池,因此会创建一个新的工作人员),然后它将恢复活力并完成执行。更有趣的是,我可以将日志命令作为函数的第一行运行,当挂起发生时作为工作程序执行,并且直到它被“唤醒”之后我才执行该行,例如我在上面描述过。

是否有人对为什么会发生这种情况有任何见解或对追踪它有什么建议?我已经尝试过启用和不启用 firebug(因为新版本的 firebug 劫持了一些允许控制台输出的 Web Worker 代码)以防万一出现错误,但无论哪种方式我都得到相同的结果。

【问题讨论】:

    标签: javascript multithreading google-chrome firefox web-worker


    【解决方案1】:

    长话短说,每次数据获取我都在创建一个新的线程池来处理我的数据排序。 threadpool.js 库没有任何清理代码(在我添加它之前,我会尽快提出拉取请求)。因此,如果过去调用的线程池尚未被垃圾收集,当我达到 Firefox 的 Web Worker 线程限制时,我会看到错误。工人限制的详细信息如下:

    Does a Firefox Workers limit exist?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多