2 人の Web ワーカー間で変数を共有する方法はありますか? (Web ワーカーは基本的に Javascript のスレッドです)
C# のような言語では、次のようなものがあります。
public static string message = "";
static void Main()
{
message = "asdf";
new Thread(mythread).Run();
}
public static void mythread()
{
Console.WriteLine(message); //outputs "asdf"
}
これが悪い例であることは承知していますが、私の Javascript アプリケーションでは、複数のスレッドに分散できる大量の計算を実行するスレッドがあります [配列の形式で大量のデータがあるためです。配列のすべての要素は互いに独立しています。言い換えれば、私のワーカースレッドはロックなどを気にする必要はありません]
2 つのスレッド間で変数を「共有」する唯一の方法は、Getter/setter を [プロトタイピングを介して] 作成し、postMessage/onmessage を使用することであることがわかりました。 AFAIKにJSONを使用するには]
LocalStorage/Database は、デッドロックが発生する可能性があるため、HTML5 仕様から除外されました。[残念ながら] オプションではありません...
私が見つけた他の可能性は、PHP を使用して getVariable.php および setVariable.php ページを実際に作成することでした。これらのページは、localstorage を使用して ints/strings を格納します...もう一度、[配列/null を含む] オブジェクトを次のように変換する必要があります。 JSON...そしてその後、JSON.parse()'d。
私の知る限り、Javascript ワーカー スレッドはメイン ページ スレッドから完全に分離されています [これが、Javascript ワーカー スレッドが DOM 要素にアクセスできない理由です
postMessage は機能しますが、遅いです。