【发布时间】: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