我正在编写一个简单的 JavaScript 应用程序,它生成 Mandlebrot set HTML5 canvas
元素中的分形。生成图形的算法很容易并行化,因此我使用 WebWorkers 将屏幕分割成更易于管理的 block 。不过,当我生成大量 WebWorkers 时,我遇到了一些问题,而且它似乎是特定于浏览器的:
Chrome: 生成 32 到 64 个 WebWorker 会导致页面终止。奇怪的是,WebWorkers 执行完成后似乎并没有被销毁。例如,如果我用 32 个 WebWorkers 运行一次模拟,就没有问题,但如果我重新运行模拟(不重新加载页面),页面就会消失。
Firefox:看来 Firefox 在产生一定数量的 WebWorkers 后就放弃了,而且还不到 32 个。一定数量的 WebWorkers 完成了,其余的似乎处于某种不确定状态状态,永远不会完成执行。我在 Firebug 的错误控制台中没有得到任何输出。
Safari: Safari 是唯一能够完美地生成大量 WebWorker 的浏览器。这里没有问题。
IE:谁在乎?
是否有人可以解决这些特定于浏览器的问题,或者至少知道导致这些问题的原因?
最佳答案
您是否有 worker.terminate();
语句来在工作人员完成后将其关闭?这绝对可以成为一个拦截器。
关于javascript - 在 Chrome/Firefox 中产生大量 WebWorkers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029207/