我正在試驗網絡工作者,並想知道他們會如何處理不平行的問題。因此我實施了Connaway's Game of Life。 (要有一點比做模糊更有趣,但是在這種情況下問題會是一樣的)如何進行工人與工人的溝通?
目前我有一個Web工作人員執行迭代併發布新的ImageData for UI線程放在我的畫布上。很好地工作。
但是,我的實驗並沒有結束,因爲我有幾個CPU可用,並且想並行化我的應用程序。
所以,首先簡單地說,我將數據分成兩部分,中間是兩部分,每部分分別處理一半。問題當然是分裂。工作者A需要來自工人B的一列像素,反之亦然。現在,我可以明確地解決這個問題,讓我的UI線程將這個列給工人,但是如果我的線程可以直接將它們傳遞給eachother,那會更好。
當進一步分裂時,每個工作人員只需要跟蹤它的鄰居工作人員,UI線程只負責更新UI(它應該是)。
我的問題是,我沒有看到我如何實現這種工人對工作者的溝通。我嘗試通過初始化postMessage將鄰居交給海誓山盟,但那會複製我的工作者而不是傳遞引用,幸運的是,chrome警告我不可能。
Uncaught Error: DATA_CLONE_ERR: DOM Exception 25
最後我看到有一種叫做SharedWorker
的東西。這是我應該看看,還是有辦法使用Worker
可以解決我的問題?
感謝您的回答@robertc,我完全忘記了這一點。我想我應該在這上面花點時間。 – Mithon
消息通道如何對工作人員通信有用 –
在Firefox出現此錯誤消息之前,這將無法使用:https://bugzilla.mozilla.org/show_bug.cgi?id = 911972 – Adria