私はウェブワーカーを試していて、恥ずかしそうにパラレルな問題にどれほどうまく対処できるのだろうかと思っていました。私はConnaway's Game of Lifeを実装しました。ワーカーとワーカーのやりとりをするには?
現時点では、私は1人のWebワーカーが繰り返しを実行し、UIスレッドの新しいImageDataをポストバックしています私のキャンバスに置く。うまく動作します。
私の実験は終わりではありませんが、いくつかのCPUがあり、アプリケーションを並列化したいからです。
私はまずデータを2つに分割し、途中でデータを分割し、2つのデータをそれぞれ半分ずつ処理します。問題はもちろん分割です。作業者Aは、作業者Bからの1列のピクセルを必要とし、その逆もあります。今、私は明らかにこれを修正することができます私のUIスレッドは、作業者にその列を与えるが、私のスレッドが直接お互いにそれらを渡すことができればもっと良いでしょう。
さらに分割すると、各ワーカーはそのワーカーを追跡するだけで済み、UIスレッドはUIを更新する責任を負うことになります。
私の問題は、私はこのワーカーと労働者のコミュニケーションをどのように達成できるかわかりません。私は初期化postMessageの方法でお互いに隣人を渡そうとしましたが、それは幸いなことに私に不可能であることを警告した参照を渡すよりも、私のワーカーをコピーするでしょう。
Uncaught Error: DATA_CLONE_ERR: DOM Exception 25
最後に、私はSharedWorker
と呼ばれるものがあることを参照してください。これは私が調べなければならないのですか、または私の問題を解決するWorker
を使用する方法がありますか?
答えてくれてありがとう@robertc、私はこれについて完全に忘れてしまった。私はこれに少し時間を費やすべきだと思う。 – Mithon
ワーカー通信に役立つメッセージチャネル –
このバグが発生するまでは、Firefoxでは動作しません。https://bugzilla.mozilla.org/show_bug.cgi?id=911972 – Adria