我遇到随机挂起的Web工作线程问题。这只发生在Firefox(版本32.0.3)上。我有一个按钮,当点击时从我的API中获取一个大的列表,然后通过threadpool.js使用线程池在web worker中实现的线程mergesort对其进行排序。整个系统在Chrome中运行得非常好,但每10个执行中有1个在Firefox中挂起。如果我单击按钮导致另一个提取/排序发生,而前一个挂起(每次执行创建一个新的线程池,因此新工作),它将恢复生命并完成执行。更有趣的是,我可以运行一个日志命令作为函数中的第一行,当挂起发生时作为工作程序执行,并且直到它被唤醒后我才会执行该行。向上"像我上面描述的那样。
有没有人能够深入了解为什么会发生这种情况或者有哪些建议可以跟踪它?我已尝试使用和不启用firebug(因为较新版本的firebug劫持了一些允许控制台输出的Web工作者代码),以防它们结束时出现错误,但我得到了相同的结果。
答案 0 :(得分:0)
长话短说,每次数据提取我都在创建一个新的线程池来处理我的数据排序。 threadpool.js库没有任何清理代码(直到我添加它,我会很快发出一个pull请求)。因此,如果过去调用的线程池尚未被垃圾收集,我会在遇到firefox的web worker线程限制时看到错误。有关工人限制的详细信息如下: