我正在编写一个简单的JavaScript应用程序,该应用程序在HTML5 canvas元素中生成Mandlebrot set分形。生成图形的算法很容易并行化,因此我正在使用WebWorkers将屏幕切成更易于管理的块。但是,当我产生大量的WebWorkers时,我遇到了一些问题,并且它似乎是特定于浏览器的:

Chrome:生成32至64个WebWorkers会杀死该页面。奇怪的是,WebWorkers执行完成后似乎并没有被破坏。例如,如果我使用32个WebWorker运行一次模拟,则没有问题,但是如果我重新运行模拟(不重新加载页面),则页面将消失。

Firefox:似乎Firefox在生成一定数量的WebWorkers之后才放弃,并且少于32个。一定数量的WebWorkers完成了,其余的似乎处于某种不确定状态,从未完成执行。我在Firebug的错误控制台中没有任何输出。

Safari:Safari是似乎完美地产生大量WebWorkers的唯一浏览器。没问题

IE:谁在乎?

是否有人可以解决所有这些特定于浏览器的问题,或者至少知道是什么导致了这些问题?

最佳答案

您是否有worker.terminate();语句在工作完成后将其关闭?这绝对可以成为一个障碍。

10-06 12:12