Gibt es eine Möglichkeit für mich, eine Variable zwischen zwei Web-Arbeiter zu teilen? (Web Arbeiter fädelt grundsätzlich in Javascript)Variablen zwischen Web-Arbeitern teilen? [globale Variablen?]
In Sprachen wie C# Sie haben:
public static string message = "";
static void Main()
{
message = "asdf";
new Thread(mythread).Run();
}
public static void mythread()
{
Console.WriteLine(message); //outputs "asdf"
}
Ich weiß, das ist ein schlechtes Beispiel, aber in meinem Javascript-Anwendung, habe ich einen Thread schwere Berechnungen zu tun, dass sein können über mehrere Threads verteilt [da ich einen großen Datenblock in Form eines Arrays habe. Alle Elemente des Arrays sind unabhängig voneinander. Mit anderen Worten, meine Worker-Threads müssen sich nicht um das Sperren oder Ähnliches kümmern]
Ich habe gefunden, dass die einzige Möglichkeit, eine Variable zwischen zwei Threads zu "teilen", ein Getter/Setter [via Prototyping] und dann postMessage/onmessage verwenden ... obwohl dies wirklich ineffizient scheint [speziell bei Objekten, die ich JSON für AFAIK verwenden muss]
LocalStorage/Database wurde aus der HTML5-Spezifikation entfernt, weil dies dazu führen könnte Deadlocks, das ist also keine Option [traurig] ...
Die andere Möglichkeit, die ich gefunden habe, war, PHP zu verwenden, um tatsächlich eine getVariable.php und setVariable.php Seiten zu haben, die localstorage verwenden, um i zu speichern nts/strings ... wiederum müssen Objekte [die arrays/null] in JSON ... und dann später in JSON.parse() 'd konvertiert werden.
Soweit ich weiß, sind Javascript-Worker-Threads völlig von der Hauptseite Thread [isoliert, die warum Worker-Threads Javascript ist nicht DOM-Elemente
Obwohl postmessage arbeitet zugreifen können, es ist langsam.
Danke!
Wenn eine Möglichkeit gibt es nicht „atomare“ Werte zwischen Arbeitern zu teilen, wäre es unmöglich, mit vorhersehbarem Ergebnis die Semantik dieser Werte zu verwenden. <- Absolut falsch in jeder Hinsicht. – Tony
Pflege um zu erarbeiten? –
Lamports Backalgorithmus. Dijkstra bewachte Befehlslogik. Alles ist speziell für die nicht-deterministische Vorhersagbarkeit. – Tony