2013-02-22 25 views
1

我正在寫一個簡單的JavaScript應用程序,它在HTML5 canvas元素中生成Mandlebrot set分形。生成圖形的算法很容易並行化,所以我使用WebWorkers將屏幕切割成更易於管理的塊。當我產生大量WebWorkers時,我遇到了一些問題,但它似乎是瀏覽器特定的:在Chrome/Firefox中產生大量Web工作者

Chrome:在32到64個WebWorkers之間生成殺死頁面。奇怪的部分是WebWorkers在完成執行後似乎不會被破壞。例如,如果我用32個WebWorkers運行一次模擬,我沒有任何問題,但是如果我重新運行模擬(不重新加載頁面),頁面就會死亡。

火狐:看來Firefox的產卵一定數量WebWorkers後只是放棄,這是小於32的WebWorkers設定數量的完成,剩下的好像在某個無人過問狀態存在,永不完執行。我在Firebug的錯誤控制檯中沒有任何輸出。

Safari瀏覽器: Safari是唯一的瀏覽器,似乎完美派生大量的WebWorkers。這裏沒有問題。

IE:誰在乎?

有沒有人有解決任何這些瀏覽器的具體問題,或至少知道是什麼導致這些問題?

+0

工人(因爲這些背景腳本在這裏被稱爲)相對較重,並不打算大量使用。 - > [source](http://dev.w3.org/html5/workers/#scope) – williamC 2013-02-22 17:03:35

+0

看起來好像不同的瀏覽器達到了你似乎已經發現的不同的限制。 [相關問題在這裏。](http://stackoverflow.com/questions/9339892/does-a-firefox-workers-limit-exist) – 2013-02-22 17:05:50

+0

你能鏈接到你的頁面嗎?這聽起來像你的工人沒有終止或什麼..... – 2013-02-23 05:59:10

回答

0

您是否有worker.terminate();報表在工作完成後關閉工人?這絕對可以成爲一個阻礙者。