¿Hay alguna forma de compartir una variable entre dos trabajadores de la web? (Trabajadores Web son básicamente Temas en Javascript)¿Compartir variables entre los trabajadores de la web? [variables globales?]
En lenguajes como C# tiene:
public static string message = "";
static void Main()
{
message = "asdf";
new Thread(mythread).Run();
}
public static void mythread()
{
Console.WriteLine(message); //outputs "asdf"
}
Sé que eso es un mal ejemplo, pero en mi solicitud Javascript, tengo un hilo haciendo cálculos pesados que pueden ser se extendió a través de múltiples hilos [ya que tengo una gran cantidad de datos en forma de una matriz. Todos los elementos de la matriz son independientes entre sí. En otras palabras, mis hilos de trabajo no tienen que preocuparse por el bloqueo o algo así]
He encontrado que la única forma de "compartir" una variable entre dos hilos sería crear un Getter/setter [a través de prototyping] y luego use postMessage/onmessage ... aunque esto parece realmente ineficiente [especialmente con objetos, que tengo que usar JSON para AFAIK]
LocalStorage/Database ha sido eliminado de la especificación HTML5 porque podría dar como resultado callejones sin salida, por lo que no es una opción [tristemente] ...
La otra posibilidad que he encontrado era utilizar PHP que en realidad tienen un getVariable.php y setVariable.php páginas, que utilizan almacenamiento local para almacenar i nts/strings ... una vez más, los objetos [que incluyen arrays/null] deben convertirse a JSON ... y luego a JSON.parse() 'd.
Por lo que yo sé, los subprocesos de trabajo de Javascript están totalmente aislados de la principal página de hilo [por lo que los subprocesos de trabajo JavaScript no pueden acceder a los elementos DOM
Aunque postMessage funciona, es lento.
Gracias!
Si hubiera alguna manera de compartir los valores que no sean "atómicas" entre los trabajadores, la semántica de esos valores serían imposibles de usar con resultados predecibles <-. Absolutamente mal en todos los sentidos. – Tony
¿Cuidar para elaborar? –
Algoritmo de panadería de Lamport. Dijkstra guardó la lógica de comando. Todo es específicamente para predecibilidad no determinista. – Tony